package com.mexcad.db.connectors;

import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;

import javax.mail.MessagingException;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Session;
import org.hibernate.Transaction;

import com.mexcad.db.delegate.DelegateConnectors;
import com.mexcad.db.dto.CKSolicitud;
import com.mexcad.db.dto.Cliente;
import com.mexcad.db.dto.Credito;
import com.mexcad.db.dto.Gerente;
import com.mexcad.db.dto.ResponseValidation;
import com.mexcad.db.dto.Solicitud;
import com.mexcad.utils.Constantes;
import com.mexcad.db.utils.CorreoElectronico;
import com.mexcad.db.utils.ExceptionDB;
import com.mexcad.db.utils.HibernateUtil;
import com.mexcad.utils.Formatter;
import com.mexcad.utils.NumberToLetterConverter;

public class SolicitudConnector {

	public static int []diasPrestamoPorMeses={0, 0, 0, 10, 13, 16, 19, 22, 25, 28, 30};
	public static double []cuotaAdministracionPorMes={500, 500.00, 444.50, 389.00, 333.50, 278.00,
										  222.50, 167.00, 111.50, 56.00, 0.00};
	public static double []cuotaAdministracionPagadaPorMes={ 500.00, 444.50, 389.00, 333.50, 278.00, 222.50, 167.00, 111.50, 56.00, 0.00,0.00};
	public static final int ENVIO_COTIZACION=1;
	public static final int ENVIO_CONTRATO=2;
	public static final int AUTORIZACION_CREDITO=3;
	public static final int SOLICITUD_RECHAZADA=4;
	public static final int SOLICITUD_ACEPTADA=5;
	
	public static final int ESQUEMA_ENTREGAS_PARCIALES=1;
	public static final int ESQUEMA_ESPECIAL_FINAL=2;
	public static final int ESQUEMA_NORMAL_IVA=4;
	public static final int ESQUEMA_ESPECIAL=6;
	
	
	public static final int ESQUEMA_SIN_IVA=3;
	
	
	public static final int ESQUEMA_UNAM=5;
	public static final int ESQUEMA_UNAM_IVA=7;
	
//	public static final int ESQUEMA_CON_IVA=4;
	

	public static final int SEMANAL=1;
	public static final int QUINCENAL=2;
	public static final int MENSUAL=3;
	public static final int BIMESTRAL=4;
	
	public static final int SEMANAL_MARTES=5;
	public static final int SEMANAL_JUEVES=6;
	public static final int SEMANAL_VIERNES=7;

	public static final int QUINCENAL_15_ULTIMO=8;
	public static final int QUINCENAL_3_18=9;
	public static final int QUINCENAL_5_20=10;
	public static final int QUINCENAL_10_25=11;

	public static final int MENSUAL_3=12;
	public static final int MENSUAL_5=13;
	public static final int MENSUAL_ULTIMO=14;
	
	
	public static final int PSG=8;
	
	
	public static final int CONTRATO_TIPO_1=1;
	public static final int CONTRATO_TIPO_2=2;
	public static final int CONTRATO_TIPO_3=3;
	public static final int CONTRATO_TIPO_4=4;
	
	
	
	
	
	
	private static Log logger = LogFactory.getLog(SolicitudConnector.class);
	//private List<BienesSolicitadosDetalle> listaDetalles;
	//private List<BienesSolCvePtales> listaCvesPtales;

	public SolicitudConnector(){
		logger.debug("Instanciating SolicitudConnector");
	}

	public static int obtieneMesesAntiguedad(String fechaStr){
		long fechaIngreso = Formatter.getDateFromString(fechaStr).getTime();
		long fechaActual= new Date().getTime();
		double resultado=(fechaActual- fechaIngreso)*((double)1/1000)*((double)1/60)*((double)1/60)*((double)1/24)*((double)1/30);
		
		return (int) resultado;
	}
	
	public static void main(String []args){
		List l = getAllSolicitudes();
		System.out.println(l.size());
	}
	
	public static ResponseValidation prevalidaSolicitud(final Solicitud solicitud) {
		
		int mesesPrestamo=obtieneMesesAntiguedad(solicitud.getFechaIngresoStr());
		double montoCreditoMaximo=0;
		ResponseValidation response  = new ResponseValidation();
		
		List<Credito> listadoCredito=CreditoConnector.buscarCreditos(solicitud.getApellidoPaterno(), solicitud.getApellidoMaterno(), solicitud.getNombresSolicitante());
		
		if(mesesPrestamo <= 5){
			response.setValid(false);
			response.setMensaje("Rechazado por antiguedad");
			
		}else if( solicitud.getIdEsquemaCredito() == SolicitudConnector.ESQUEMA_UNAM && solicitud.getIdPeriodoSolicitado()==2){
			double montoPrestamoSolicitado = solicitud.getMontoSolicitado();
			double montoSalarioMensual = solicitud.getIngresosMensuales();
			int plazo = solicitud.getPlazoSolicitado();
			
			if((mesesPrestamo>=12 && mesesPrestamo<=24) && 
				(montoPrestamoSolicitado <= montoSalarioMensual ) && (plazo ==12 || plazo ==24)){
				
				response.setValid(true);
				response.setMensaje("Prevalidación aceptada para  esquema UNAM");

			}else if((mesesPrestamo>24 && mesesPrestamo < 48) && 
					montoPrestamoSolicitado <=(montoSalarioMensual*2)  && (plazo ==12 || plazo ==24)){
				response.setValid(true);
				response.setMensaje("Prevalidación aceptada para  esquema UNAM");
				
				
			}else if((mesesPrestamo>=48 ) && 
					montoPrestamoSolicitado<=(montoSalarioMensual*3) && (plazo ==12 || plazo ==24|| plazo ==48)){
				response.setValid(true);
				response.setMensaje("Prevalidación aceptada para esquema UNAM");
				
				
			}else{
				response.setValid(false);
				response.setMensaje("Rechazado para esquema UNAM");
				
			}
			
			
			
		}else { // Se permite el préstamo
			double ingresosPorDia = (double)(solicitud.getIngresosMensuales()/30);
			if(mesesPrestamo<10){
				 montoCreditoMaximo = (double)(ingresosPorDia*diasPrestamoPorMeses[mesesPrestamo]);
			}else{ // Nuevas reglas de negocio
				
				double meses=0;
				if(solicitud.getIdPeriodoSolicitado() == SEMANAL || solicitud.getIdPeriodoSolicitado() == SolicitudConnector.SEMANAL_MARTES || 
						solicitud.getIdPeriodoSolicitado() == SolicitudConnector.SEMANAL_JUEVES || solicitud.getIdPeriodoSolicitado() == SolicitudConnector.SEMANAL_VIERNES){
					meses=(int) Math.ceil((double)solicitud.getPlazoSolicitado()/4);
				}else if(solicitud.getIdPeriodoSolicitado() == QUINCENAL || solicitud.getIdPeriodoSolicitado() == SolicitudConnector.QUINCENAL_10_25 
						|| solicitud.getIdPeriodoSolicitado() == SolicitudConnector.QUINCENAL_15_ULTIMO
						|| solicitud.getIdPeriodoSolicitado() == SolicitudConnector.QUINCENAL_3_18
						|| solicitud.getIdPeriodoSolicitado() == SolicitudConnector.QUINCENAL_5_20) {
					meses= (int) Math.ceil((double)solicitud.getPlazoSolicitado()/2);
				} else if(solicitud.getIdPeriodoSolicitado() == MENSUAL|| 
						  solicitud.getIdPeriodoSolicitado() == SolicitudConnector.MENSUAL_3
						  || solicitud.getIdPeriodoSolicitado() == SolicitudConnector.MENSUAL_5
						  || solicitud.getIdPeriodoSolicitado() == SolicitudConnector.MENSUAL_ULTIMO){
					meses= solicitud.getPlazoSolicitado();
				} else if(solicitud.getIdPeriodoSolicitado() == BIMESTRAL){
					meses=solicitud.getPlazoSolicitado()*2;
				}
				
				if(mesesPrestamo >= 10 && mesesPrestamo <= 17){ 
					if(meses > 12){
						response.setValid(false);
						response.setMensaje("Se rechaza el préstamo por plazo máximo");
						return response;
					}
					montoCreditoMaximo = solicitud.getIngresosMensuales();
					 
				}else if(mesesPrestamo >= 18 && mesesPrestamo <=23){
					if(meses > 18){
						response.setValid(false);
						response.setMensaje("Se rechaza el préstamo por plazo máximo");
						return response;
					}
					montoCreditoMaximo = solicitud.getIngresosMensuales()*2;
					 
				}else {
					if(meses > 24){
						response.setValid(false);
						response.setMensaje("Se rechaza el préstamo por plazo máximo");
						return response;
					}
					montoCreditoMaximo = solicitud.getIngresosMensuales()*3;
				}

			}
			
			
			if(solicitud.getMontoSolicitado() <= montoCreditoMaximo ){
				response.setValid(true);
				response.setMensaje("Prevalidación aceptada");

				if(listadoCredito!=null && listadoCredito.size()>0){
					response.setMensaje(response.getMensaje()+" Cliente con crédito activo");
					
				}


			}else{
				response.setValid(false);
				response.setMensaje( "El monto máximo de prestamo es de: "+ montoCreditoMaximo);

			}
		}
		
		return response;
		
	}
	
	public static List<Solicitud> getAllSolicitudes(){
		Session session = HibernateUtil.getSessionFactory().openSession();
		List <Solicitud>lista=null;
		try{
			logger.debug("Querying Solicitud");
			String query ="FROM Solicitud order by apellidoPaterno";
			lista=session.createQuery(query).list();
			session.close();
		}catch(org.hibernate.exception.GenericJDBCException excepts){
			if(session!= null&& session.isOpen())
				session.close();
			
		}catch(Exception e){
			if(session!= null&& session.isOpen())
				session.close();
			
		} finally{
			if(session!= null && session.isOpen())
				session.close();
			
		}
		return lista;	
	}

	public static List<Solicitud> getAllSolicitudesSolicitantes(){
		Session session = HibernateUtil.getSessionFactory().openSession();
		List <Solicitud>lista=null;
		try{
			logger.debug("Querying Solicitud");
			String query ="select distinct nombressolicitante, apellidopaterno, apellidomaterno,"+
	                	  "idCliente, ingresosMensuales,fechaIngreso from solicitud order by apellidopaterno";
			lista=session.createQuery(query).list();
			session.close();
		}catch(org.hibernate.exception.GenericJDBCException excepts){
			if(session!= null&& session.isOpen())
				session.close();
			
		}catch(Exception e){
			if(session!= null&& session.isOpen())
				session.close();
			
		} finally{
			if(session!= null && session.isOpen())
				session.close();
			
		}
		return lista;	
	}
	
	
	public static List<Solicitud> getSolicitudesPorCliente(int idCliente){
		Session session = HibernateUtil.getSessionFactory().openSession();
		List<Solicitud> lista=null;
		try{	
			logger.debug("Querying Solicitud");
			String query =" FROM  Solicitud where cksolicitud.idCliente="+idCliente;
			lista= session.createQuery(query).list();
			session.close();
		}catch(org.hibernate.exception.GenericJDBCException excepts){
			if(session!= null&& session.isOpen())
				session.close();
			
		}catch(Exception e){
			if(session!= null&& session.isOpen())
				session.close();
			
		} finally{
			if(session!= null && session.isOpen())
				session.close();
			
		}
		return lista;
	}
	

	
	
	public static Solicitud getSolicitudPorId(int idSolicitud){
		Session session = HibernateUtil.getSessionFactory().openSession();
		Solicitud solicitud= null;
		try{
			logger.debug("Querying Solicitud");
			String query =" FROM  Solicitud where cksolicitud.idSolicitud="+idSolicitud;
			solicitud= (Solicitud)session.createQuery(query).uniqueResult();
			session.close();
		}catch(org.hibernate.exception.GenericJDBCException excepts){
			if(session!= null && session.isOpen())
				session.close();
			
		}catch(Exception e){
			if(session!= null&& session.isOpen())
				session.close();
			
		} finally{
			if(session!= null && session.isOpen())
				session.close();
			
		}
		return solicitud;
	}
	
	public static synchronized int actualizaStatusSolicitud(Solicitud solicitud, int status){
		Session session=null;
		try{
			solicitud.setIdEstatusSolicitud(status);
			session = HibernateUtil.getSessionFactory().openSession();
			Transaction transaction = session.beginTransaction();
			session.update(solicitud);
			transaction.commit();
			session.close();
			
	
			return solicitud.getCksolicitud().getIdSolicitud();
		}catch(org.hibernate.exception.GenericJDBCException excepts){
			if(session!= null&& session.isOpen())
				session.close();
			return ExceptionDB.getNumMessageDB(excepts);
		}catch(Exception e){
			if(session!= null&& session.isOpen())
				session.close();
			return ExceptionDB.getNumMessageDB(e);
		} 
	}
	
	
	

	public static synchronized int actualizaSolicitud(Solicitud solicitud){
		Session session=null;
		try{

			session = HibernateUtil.getSessionFactory().openSession();
			Transaction transaction = session.beginTransaction();
			solicitud.setNombresSolicitante(solicitud.getNombresSolicitante().toUpperCase());
			solicitud.setApellidoPaterno(solicitud.getApellidoPaterno().toUpperCase());
			solicitud.setApellidoMaterno(solicitud.getApellidoMaterno().toUpperCase());
			solicitud.setCalle(solicitud.getCalle()!=null?solicitud.getCalle().toUpperCase():"");
			solicitud.setColonia(solicitud.getColonia()!=null?solicitud.getColonia().toUpperCase():"" );
			solicitud.setPobDelegacion(  solicitud.getPobDelegacion()!=null?solicitud.getPobDelegacion().toUpperCase():"");
			solicitud.setCp(solicitud.getCp()!=null?solicitud.getCp().toUpperCase():"");
			solicitud.setTelefono(solicitud.getTelefono()!=null?solicitud.getTelefono().toUpperCase():"");
			
			
			
			solicitud.setFechaCreacion(Formatter.getDateFromString(Formatter.getDateToday()));
			
			double monto = solicitud.getMontoSolicitado();
			
			String montoStr = new NumberToLetterConverter().convertirLetras((int)monto);
			monto = (monto-(int)monto)*100;
			montoStr=montoStr+" "+DelegateConnectors.getMonedaById(solicitud.getIdMoneda()).getDescMoneda()+" ("+((int)monto<10?"0"+((int)monto):((int)monto))+"/100 ) MN";
			solicitud.setMontoLetra(montoStr);
			
			double tasa =solicitud.getTasaBase();//
			double montoPorPeriodo=getMontoPorPeridoSolicitadoBySolicitud(solicitud);
			solicitud.setMontoMensual(montoPorPeriodo);
			solicitud.setMontoTotal(montoPorPeriodo*solicitud.getPlazoSolicitado());
			
			montoStr = new NumberToLetterConverter().convertirLetras((int)montoPorPeriodo);
			monto = (montoPorPeriodo-(int)montoPorPeriodo)*100;
			montoStr=montoStr+" "+DelegateConnectors.getMonedaById(solicitud.getIdMoneda()).getDescMoneda()+" ("+((int)monto<10?"0"+((int)monto):((int)monto))+"/100 ) MN";
			solicitud.setMensualidadLetra(montoStr);
			
			monto=solicitud.getMontoTotal();
			montoStr = new NumberToLetterConverter().convertirLetras((int)monto);
			monto = (monto-(int)monto)*100;
			montoStr=montoStr+" "+DelegateConnectors.getMonedaById(solicitud.getIdMoneda()).getDescMoneda()+" ("+((int)monto<10?"0"+((int)monto):((int)monto))+"/100 ) MN";
			solicitud.setMontoTotalLetras(montoStr);
			
			
			
			List<RentaBean> listadoRentas= obtieneRentasPorSolicitudActualizacion(solicitud);
			if(listadoRentas!=null && listadoRentas.size()>0){
				solicitud.setFechaInicial(Formatter.getDateFromString(listadoRentas.get(0).getFechaInicial()));
				solicitud.setFechaFinal(Formatter.getDateFromString(listadoRentas.get(listadoRentas.size()-1).getFechaExigible()));
				
			}
			
			logger.debug("Querying Solicitud");
			
			if(solicitud.getCksolicitud().getIdSolicitud() == 0){
				solicitud.getCksolicitud().setIdSolicitud(getUltimoIdSolicitud());
				session.save(solicitud);
				transaction.commit();
			}else{
			
				
				session.update(solicitud);
				transaction.commit();
			}
			
			session.close();
	
			return solicitud.getCksolicitud().getIdSolicitud();
		}catch(org.hibernate.exception.GenericJDBCException excepts){
			if(session!= null&& session.isOpen())
				session.close();
			return ExceptionDB.getNumMessageDB(excepts);
		}catch(Exception e){
			if(session!= null&& session.isOpen())
				session.close();
			return ExceptionDB.getNumMessageDB(e);
		} finally{
			if(session!= null&& session.isOpen())
				session.close();
			
		}
		
	}

	public static double redondeaCantidad2Digitos(double val){
		
    	val = val*100;
    	int tmp=(int)(val);
    	val=(double)tmp/100;
    	return val;
	}
	
	
	public static synchronized int guardaSolicitud(Solicitud solicitud){
		Session session=null;
		Transaction transaction =null;
		try{

			session = HibernateUtil.getSessionFactory().openSession();
			transaction = session.beginTransaction();
			solicitud.setNombresSolicitante(solicitud.getNombresSolicitante().toUpperCase());
			solicitud.setApellidoPaterno(solicitud.getApellidoPaterno().toUpperCase());
			solicitud.setApellidoMaterno(solicitud.getApellidoMaterno().toUpperCase());
			solicitud.setCalle(solicitud.getCalle().toUpperCase());
			solicitud.setColonia(solicitud.getColonia().toUpperCase());
			solicitud.setPobDelegacion(solicitud.getPobDelegacion().toUpperCase());
			solicitud.setCp(solicitud.getCp().toUpperCase());
			solicitud.setTelefono(solicitud.getTelefono().toUpperCase());
			
			
			solicitud.setFechaCreacion(Formatter.getDateFromString(Formatter.getDateToday()));
			solicitud.setRfc(solicitud.getRfc()!=null?solicitud.getRfc().toUpperCase():"");
			solicitud.setMontoSolicitado(redondeaCantidad2Digitos(solicitud.getMontoSolicitado()));
			
			double monto = solicitud.getMontoSolicitado();
			
			String montoStr = new NumberToLetterConverter().convertirLetras((int)monto);
			monto = (monto-(int)monto)*100;
			montoStr=montoStr+" "+DelegateConnectors.getMonedaById(solicitud.getIdMoneda()).getDescMoneda()+" "+((int)monto<10?"0"+((int)monto):((int)monto))+"/100  MN";
			solicitud.setMontoLetra(montoStr);
		
			double tasa =solicitud.getTasaBase();//
			double montoPorPeriodo=getMontoPorPeridoSolicitadoBySolicitud(solicitud);
			solicitud.setMontoMensual(redondeaCantidad2Digitos(montoPorPeriodo));
			solicitud.setMontoTotal(redondeaCantidad2Digitos(montoPorPeriodo*solicitud.getPlazoSolicitado()));
			
			montoStr = new NumberToLetterConverter().convertirLetras((int)montoPorPeriodo);
			monto = (montoPorPeriodo-(int)montoPorPeriodo)*100;
			montoStr=montoStr+" "+DelegateConnectors.getMonedaById(solicitud.getIdMoneda()).getDescMoneda()+" "+((int)monto<10?"0"+((int)monto):((int)monto))+"/100  MN";
			solicitud.setMensualidadLetra(montoStr);
			
			monto=solicitud.getMontoTotal();
			montoStr = new NumberToLetterConverter().convertirLetras((int)monto);
			monto = (monto-(int)monto)*100;
			montoStr=montoStr+" "+DelegateConnectors.getMonedaById(solicitud.getIdMoneda()).getDescMoneda()+" "+((int)monto<10?"0"+((int)monto):((int)monto))+"/100  MN";
			solicitud.setMontoTotalLetras(montoStr);
			
			
			
			List<RentaBean> listadoRentas= obtieneRentasPorSolicitud(solicitud);
			
			double meses=0;
			if(solicitud.getIdPeriodoSolicitado() == SEMANAL || solicitud.getIdPeriodoSolicitado() == SolicitudConnector.SEMANAL_MARTES || 
			   solicitud.getIdPeriodoSolicitado() == SolicitudConnector.SEMANAL_JUEVES||solicitud.getIdPeriodoSolicitado() == SolicitudConnector.SEMANAL_VIERNES){
				meses=(int) Math.ceil((double)solicitud.getPlazoSolicitado()/4);
			}else if(solicitud.getIdPeriodoSolicitado() == QUINCENAL || solicitud.getIdPeriodoSolicitado() == SolicitudConnector.QUINCENAL_3_18 ||
					solicitud.getIdPeriodoSolicitado() == SolicitudConnector.QUINCENAL_5_20 || solicitud.getIdPeriodoSolicitado() == SolicitudConnector.QUINCENAL_10_25 || 
					solicitud.getIdPeriodoSolicitado() == SolicitudConnector.QUINCENAL_15_ULTIMO){
				meses= (int) Math.ceil((double)solicitud.getPlazoSolicitado()/2);
			} else if(solicitud.getIdPeriodoSolicitado() == MENSUAL || solicitud.getIdPeriodoSolicitado() == SolicitudConnector.MENSUAL_3 
					  || solicitud.getIdPeriodoSolicitado() == MENSUAL_5 || solicitud.getIdPeriodoSolicitado() == MENSUAL_ULTIMO){
				meses= solicitud.getPlazoSolicitado();
			} else if(solicitud.getIdPeriodoSolicitado() == BIMESTRAL){
				meses=solicitud.getPlazoSolicitado()*2;
			}
			double cuota=0.0;
			if(meses <=10 ){
				cuota=cuotaAdministracionPorMes[(int)meses];
			}
			solicitud.setCuota(cuota/(1+CreditoConnector.IVA));
			
			if(listadoRentas!=null && listadoRentas.size()>0){
				solicitud.setFechaInicial(Formatter.getDateFromString(listadoRentas.get(0).getFechaInicial()));
				solicitud.setFechaPrimerExigible(Formatter.getDateFromString(listadoRentas.get(0).getFechaExigible()));
				solicitud.setFechaFinal(Formatter.getDateFromString(listadoRentas.get(listadoRentas.size()-1).getFechaExigible()));
				
			}
			
			logger.debug("Querying Solicitud");
			
			if(solicitud.getCksolicitud().getIdSolicitud() == 0){
				solicitud.getCksolicitud().setIdSolicitud(getUltimoIdSolicitud());
				session.save(solicitud);
				transaction.commit();
			}else{
			
				
				session.update(solicitud);
				transaction.commit();
			}
			
			session.close();
	
			return solicitud.getCksolicitud().getIdSolicitud();
		}catch(org.hibernate.exception.GenericJDBCException excepts){
			transaction.rollback();
			if(session!= null&& session.isOpen())
				session.close();
			return ExceptionDB.getNumMessageDB(excepts);
		}catch(Exception e){
			if(session!= null&& session.isOpen())
				session.close();
			return ExceptionDB.getNumMessageDB(e);
		} finally{
			if(session!= null&& session.isOpen())
				session.close();
			
		}
		
	}

	
	


	public static   int getUltimoIdSolicitud(){
		Session session = HibernateUtil.getSessionFactory().openSession();
		Integer max = null;
		try{
			String query = "select max(cksolicitud.idSolicitud) from Solicitud ";
		
			max = (Integer) session.createQuery(query).uniqueResult();
			session.close();
		}catch(org.hibernate.exception.GenericJDBCException excepts){
			if(session!= null&& session.isOpen())
				session.close();
			return ExceptionDB.getNumMessageDB(excepts);
		}catch(Exception e){
			if(session!= null&& session.isOpen())
				session.close();
			return ExceptionDB.getNumMessageDB(e);
		} finally{
			if(session!= null&& session.isOpen())
				session.close();
			
		}
		if(max==null)
			return 1;
		else
			return max+1;
		
	}
	
	public static synchronized void eliminaSolicitud(int idSolicitud) {
		Session session = null;
		Transaction transaction = null;
		
		try{
			 session = HibernateUtil.getSessionFactory().openSession();
			 transaction = session.beginTransaction();
			
			Solicitud sol= getSolicitudPorId(idSolicitud);
	
			session.delete(sol);
			transaction.commit();
		}catch(org.hibernate.exception.GenericJDBCException excepts){
			if(session!= null&& session.isOpen())
				session.close();
		}catch(Exception e){
			if(session!= null&& session.isOpen())
				session.close();
		} finally{
			if(session!= null&& session.isOpen())
				session.close();
			
		}
		session.close();
	}	
	
	public static int reenviarCreacionCredito(int idSolicitud) {
		
		Solicitud sol = DelegateConnectors.getSolicitudPorId(idSolicitud);

		String html ="<img src=\"http://www.mexcad.com.mx/Mexcad.jpg\" width=\"182\" height=\"112\">";
		
		html+=SolicitudConnector.getHTMLStringfromSolicitudCreacionCredito(sol);

		 CorreoElectronico email = new CorreoElectronico(DelegateConnectors.getEjecutivoPorId(sol.getIdEjecutivo()).getEmail(),"Se autorizó el crédito de "+sol.getApellidoPaterno()+" "+sol.getApellidoMaterno()+" " + sol.getNombresSolicitante(), html );
		 try {
			email.enviaCorreo();
		} catch (MessagingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return -1;
		}
		return 0;
		
		
		
	}
	
	
	public static double getMontoPorPeridoSolicitadoBySolicitud(Solicitud sol){
		if(sol != null){
			double montoMensual=0;
			double tasa = sol.getTasaBase();
			int plazo = sol.getPlazoSolicitado();
			int tipoPlazo = sol.getIdPeriodoSolicitado();
			double meses=0;
			if(tipoPlazo == SEMANAL || tipoPlazo == SolicitudConnector.SEMANAL_MARTES
					|| tipoPlazo == SolicitudConnector.SEMANAL_JUEVES|| tipoPlazo == SolicitudConnector.SEMANAL_VIERNES){
				meses= (int)Math.ceil((double)plazo/4);
			}else if(tipoPlazo == QUINCENAL|| tipoPlazo == SolicitudConnector.QUINCENAL_10_25|| tipoPlazo == SolicitudConnector.QUINCENAL_15_ULTIMO
					|| tipoPlazo == SolicitudConnector.QUINCENAL_3_18|| tipoPlazo == SolicitudConnector.QUINCENAL_5_20 ){
				meses= (int)Math.ceil((double)plazo/2);
				
			} else if(tipoPlazo == MENSUAL|| tipoPlazo == SolicitudConnector.MENSUAL_3
					|| tipoPlazo == SolicitudConnector.MENSUAL_5|| tipoPlazo == SolicitudConnector.MENSUAL_ULTIMO){
				meses= plazo;
			} else if(tipoPlazo == BIMESTRAL){
				meses=plazo*2;
			}
			
			
			
			double cuota=0.0;
			if(meses <=10 ){
				cuota=cuotaAdministracionPorMes[(int)meses];
			}
			cuota=cuota/(1+CreditoConnector.IVA);
			if(tipoPlazo == SEMANAL || tipoPlazo == SolicitudConnector.SEMANAL_MARTES
					|| tipoPlazo == SolicitudConnector.SEMANAL_JUEVES|| tipoPlazo == SolicitudConnector.SEMANAL_VIERNES){
				meses= (int)plazo/4;
			}else if(tipoPlazo == QUINCENAL|| tipoPlazo == SolicitudConnector.QUINCENAL_10_25|| tipoPlazo == SolicitudConnector.QUINCENAL_15_ULTIMO
					|| tipoPlazo == SolicitudConnector.QUINCENAL_3_18|| tipoPlazo == SolicitudConnector.QUINCENAL_5_20 ){
				meses= (double)plazo/2;
				
			} else if(tipoPlazo == MENSUAL|| tipoPlazo == SolicitudConnector.MENSUAL_3
					|| tipoPlazo == SolicitudConnector.MENSUAL_5|| tipoPlazo == SolicitudConnector.MENSUAL_ULTIMO){
				meses= plazo;
			} else if(tipoPlazo == BIMESTRAL){
				meses=plazo*2;
			}
			
			if(tipoPlazo == SEMANAL|| tipoPlazo == SolicitudConnector.SEMANAL_MARTES
					|| tipoPlazo == SolicitudConnector.SEMANAL_JUEVES|| tipoPlazo == SolicitudConnector.SEMANAL_VIERNES){
				
				tasa = (double)tasa/52;
				double interes = sol.getMontoSolicitado()*plazo*(tasa*0.01);
				double iva=0.0;
				if(sol.getIdEsquemaCredito()!=SolicitudConnector.ESQUEMA_SIN_IVA){
					//iva = interes*CreditoConnector.IVA;
					iva = interes*CreditoConnector.IVA+cuota*CreditoConnector.IVA;
				} 
				montoMensual= sol.getMontoSolicitado()+interes+iva+cuota;
				return (double)(montoMensual/sol.getPlazoSolicitado());
			}else{
				
				tasa = (double)tasa/12;
				double interes = sol.getMontoSolicitado()*meses*(tasa*0.01);
				double iva=0.0;
				if(sol.getIdEsquemaCredito()!=SolicitudConnector.ESQUEMA_SIN_IVA){
					iva = interes*CreditoConnector.IVA+cuota*CreditoConnector.IVA;
//					iva = interes*CreditoConnector.IVA;
				}
				montoMensual= sol.getMontoSolicitado()+interes+iva+cuota;
				return (double)(montoMensual/sol.getPlazoSolicitado());
			}
		}else{
			return 0.0;
			
		}
		
	}
	
	
	public static List<Solicitud> buscarSolicitudes(String numSolicitud, String cliente,String ejecutivo, String nombre, String aPaterno, String materno, String fechaInicial, String fechaFinal){
	//public static List<Solicitud> buscarSolicitudes(String ...listadoStrings){
		String []identificadores= {" cksolicitud.idSolicitud=",
								   " cksolicitud.idCliente=",
								   " idEjecutivo=",
								   " nombresSolicitante like '%",
								   " apellidoPaterno  like '%",
								   " apellidoMaterno  like '%",
								   " fechaCreacion>= '",
								   " fechaCreacion < '"};	
		
		String []listadoStrings={ numSolicitud,  cliente, ejecutivo, nombre.toUpperCase(),  aPaterno.toUpperCase(),  materno.toUpperCase(),  fechaInicial,  fechaFinal};
		Session session = null;
		List<Solicitud> lista= null;
		
		try{
			session = HibernateUtil.getSessionFactory().openSession();
			logger.debug("Querying Solicitud");
			int cont=0;
			String query =" FROM  Solicitud ";
			//String filtro=" where ";
			
			
			if(listadoStrings[0].length() > 0){
				lista = new ArrayList<Solicitud>();
				Solicitud sol = getSolicitudPorId(new Integer(listadoStrings[0]));
				if(sol!=null)
					lista.add(sol);
				
			}else{
				for(int i=0;i<listadoStrings.length;++i){
					if(listadoStrings[i].length()>0)
					  cont++;	
				}
				if(cont > 0){
					query+=" where ";
					
					for(int i=0;i<listadoStrings.length;++i){
						if(listadoStrings[i].length() > 0){
							query+=identificadores[i]+listadoStrings[i];
							if(cont==0){
								break;
							}
							if(i>2 && i<6){
								query+="%' ";
							}else if(i>=6){
								query+="' ";
									
							}
							if(cont>1){
								query+=" AND ";
							}	
							cont--;
						}
						
						  
					}
			}
				lista= session.createQuery(query).list();
				session.close();
				
			}
		}catch(org.hibernate.exception.GenericJDBCException excepts){
			if(session!= null&& session.isOpen())
				session.close();
		}catch(Exception e){
			if(session!= null&& session.isOpen())
				session.close();
		} finally{
			if(session!= null&& session.isOpen())
				session.close();
			
		}
		
	
		return lista;
	}
	
	public static String getDoubleCentesimas(double num){
		
		NumberFormat nf = 
		       NumberFormat.getCurrencyInstance(Locale.PRC);
		String val= nf.format(num);
		return val.substring(1,val.length());
	}
	
	public static String getHTMLStringfromSolicitudCreacionCredito(Solicitud sol){
		
		String html="";
		
		double tasaMes =0.0;
		int plazo = sol.getPlazoSolicitado();
		int tipoPlazo = sol.getIdPeriodoSolicitado();
		double meses=0;
		
		double interes =0.0;
		double iva = 0.0;
		double montoTotal= 0.0;
		
		
		
		if(tipoPlazo == SEMANAL || tipoPlazo == SolicitudConnector.SEMANAL_MARTES || 
		   tipoPlazo == SolicitudConnector.SEMANAL_JUEVES || tipoPlazo == SolicitudConnector.SEMANAL_VIERNES){
			meses=(int) Math.ceil((double)plazo/4);
		}else if(tipoPlazo == QUINCENAL || tipoPlazo == SolicitudConnector.QUINCENAL_10_25 
				 || tipoPlazo == SolicitudConnector.QUINCENAL_15_ULTIMO 
				 || tipoPlazo == SolicitudConnector.QUINCENAL_3_18 
				 || tipoPlazo == SolicitudConnector.QUINCENAL_5_20){
			
			meses= (int)Math.ceil((double)plazo/2);
			
		} else if(tipoPlazo == MENSUAL || tipoPlazo == SolicitudConnector.MENSUAL_3 || 
				  tipoPlazo == SolicitudConnector.MENSUAL_5 || tipoPlazo == SolicitudConnector.MENSUAL_ULTIMO){
			meses= plazo;
		} else if(tipoPlazo == BIMESTRAL){
			meses=plazo*2;
		}
		double cuota=0.0;
		if(meses <=10 ){
			cuota=cuotaAdministracionPorMes[(int)meses];
		}
		
		if(tipoPlazo == SEMANAL || tipoPlazo == SolicitudConnector.SEMANAL_MARTES || 
				   tipoPlazo == SolicitudConnector.SEMANAL_JUEVES || tipoPlazo == SolicitudConnector.SEMANAL_VIERNES){
			meses=(int) plazo/4;
		}else if(tipoPlazo == QUINCENAL || tipoPlazo == SolicitudConnector.QUINCENAL_10_25 
				 || tipoPlazo == SolicitudConnector.QUINCENAL_15_ULTIMO 
				 || tipoPlazo == SolicitudConnector.QUINCENAL_3_18 
				 || tipoPlazo == SolicitudConnector.QUINCENAL_5_20){
			meses= (double)plazo/2;
			
		} else if(tipoPlazo == MENSUAL || tipoPlazo == SolicitudConnector.MENSUAL_3 || 
				  tipoPlazo == SolicitudConnector.MENSUAL_5 || tipoPlazo == SolicitudConnector.MENSUAL_ULTIMO){
			meses= plazo;
		} else if(tipoPlazo == BIMESTRAL){
			meses=plazo*2;
		}
		
		
		if(tipoPlazo == SEMANAL || tipoPlazo == SolicitudConnector.SEMANAL_MARTES || 
				   tipoPlazo == SolicitudConnector.SEMANAL_JUEVES || tipoPlazo == SolicitudConnector.SEMANAL_VIERNES){
			 tasaMes=(double) sol.getTasaBase()/52;
			 interes = sol.getMontoSolicitado()*(sol.getPlazoSolicitado())*(tasaMes*0.01);
			 if(sol.getIdEsquemaCredito()!=SolicitudConnector.ESQUEMA_SIN_IVA){
				 iva = interes*CreditoConnector.IVA+cuota*CreditoConnector.IVA;
//				 iva = interes*CreditoConnector.IVA;
			 }
			 montoTotal= sol.getMontoSolicitado()+interes+iva+cuota;
			
			
		}else{
			 tasaMes= sol.getTasaBase()/12;
			 interes = sol.getMontoSolicitado()*meses*(tasaMes*0.01);
			 if(sol.getIdEsquemaCredito()!=SolicitudConnector.ESQUEMA_SIN_IVA){
				 iva = interes*CreditoConnector.IVA+cuota*CreditoConnector.IVA;
//					 iva = interes*CreditoConnector.IVA;
			 }
			 montoTotal= sol.getMontoSolicitado()+interes+iva+cuota;
			
			
		}
		
		
		
		
		
		
		html+="<style type=\"text/css\">\n";
		html+="<!--\n";
			html+=".Estilo2 {font-size: 10px}\n";
			html+=".Estilo3 {font-size: 12px}\n";
			html+=".Estilo5 {font-size: 12px; font-weight: bold; }\n";
		html+="-->\n";

		html+=".titulo{\n";
		html+="	background-image: url(blockdefault3.png);\n";
		html+="	background-repeat: repeat-x;\n";
		html+="	font: bold 18px/14px Verdana, Geneva, Arial, Helvetica, sans-serif;\n";
		html+="		color:white;\n";
		html+="	padding:4px;\n";
		html+="	background-color:#5C909A;\n";
		html+="}\n";
		html+=".label{\n";
		html+="	background-image: url(blockdefault3.png);\n";
		html+="	background-repeat: repeat-x;\n";
		html+="	font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif;\n";
		html+="	color:white;\n";
		html+="	padding:4px;\n";
		html+="	background-color:#5C909A;\n";
		html+="}\n";
		html+="</style>\n";
		html+="<br/><b>Tabla de descuentos</b><br/>\n";
		
		
		
		List<RentaBean> listadoRentas= obtieneRentasPorSolicitud(sol);
		
		
		html+="<table width=\"847\" border=\"0\" cellpadding=\"1\" cellspacing=\"1\">";
		html+="	  <tr  style=\"background-color:#4563EF; color:#FFFFFF\" align=\"center\">";
		html+="	    <td width=\"40\">Núm.</td>";
		html+="	    <td width=\"90\">Fecha inicial </td>";
		html+="	    <td width=\"90\">Fecha exigible</td>";
		html+="		<td width=\"100\">Amortizacion</td>";
		html+="	    <td width=\"90\">Intereses</td>";
		html+="	    <td width=\"80\">Iva</td>";
		html+="	    <td width=\"80\">Cuota</td>";
		html+="	    <td width=\"100\">Pago</td>";
		html+="	    <td width=\"100\">Saldo</td>";
		html+="	  </tr>";
		
		for(int i=0;i<listadoRentas.size();++i){
			RentaBean bean = listadoRentas.get(i);
			if(!(i%2==0)){
				html+="	  <tr style=\"background-color:#B3C1FD; \" align=\"center\">";
			}else{
				html+="	  <tr align=\"center\">";
			}		
			
			html+="	    <td>"+bean.getNumRenta()+"</td>";
			html+="	    <td>"+bean.getFechaInicial()+"</td>";
			html+="	    <td>"+bean.getFechaExigible()+"</td>";
			html+="		<td>"+getDoubleCentesimas(bean.getAmortizacion())+"</td>";
			html+="	    <td>"+getDoubleCentesimas(bean.getIntereses())+"</td>";
			html+="	    <td>"+getDoubleCentesimas(bean.getIva())+"</td>";
			html+="	    <td>"+getDoubleCentesimas(bean.getComision())+"</td>";
			html+="	    <td>"+getDoubleCentesimas(bean.getPrimaPago())+"</td>";
			html+="	    <td>"+getDoubleCentesimas(bean.getMontoBase())+"</td>";
			html+="	  </tr>";
		}
		
		html+="</table><br/>";
			
		
		
		
		
		
		return html;
	}
	
	public static String getHTMLStringfromSolicitud(Solicitud sol){
		
		
		String html="";
		
		double tasaMes =0.0;
		int plazo = sol.getPlazoSolicitado();
		int tipoPlazo = sol.getIdPeriodoSolicitado();
		double meses=0;
		
		double interes =0.0;
		double iva = 0.0;
		double montoTotal= 0.0;
		
		
		
		if(tipoPlazo == SEMANAL || 
				   tipoPlazo == SolicitudConnector.SEMANAL_MARTES || 
				   tipoPlazo == SolicitudConnector.SEMANAL_JUEVES || 
				   tipoPlazo == SolicitudConnector.SEMANAL_VIERNES){
			meses=(int) Math.ceil((double)plazo/4);
		}else if(tipoPlazo == QUINCENAL || tipoPlazo == SolicitudConnector.QUINCENAL_10_25 
				   || tipoPlazo == SolicitudConnector.QUINCENAL_15_ULTIMO 
				   || tipoPlazo == SolicitudConnector.QUINCENAL_3_18 
				   || tipoPlazo == SolicitudConnector.QUINCENAL_5_20){
			meses= Math.ceil((double)plazo/2);
			
		} else if(tipoPlazo == MENSUAL
				   || tipoPlazo == SolicitudConnector.MENSUAL_3 
				   || tipoPlazo == SolicitudConnector.MENSUAL_5 
				   || tipoPlazo == SolicitudConnector.MENSUAL_ULTIMO){
			meses= plazo;
		} else if(tipoPlazo == BIMESTRAL){
			meses=plazo*2;
		}
		double cuota=0.0;
		if(meses <=10 ){
			cuota=cuotaAdministracionPorMes[(int)meses];
		}
		cuota=cuota/(1+CreditoConnector.IVA);
		
		if(tipoPlazo == SEMANAL ||
				   tipoPlazo == SolicitudConnector.SEMANAL_MARTES || 
				   tipoPlazo == SolicitudConnector.SEMANAL_JUEVES || 
				   tipoPlazo == SolicitudConnector.SEMANAL_VIERNES){
			meses=(int) plazo/4;
		}else if(tipoPlazo == QUINCENAL || tipoPlazo == SolicitudConnector.QUINCENAL_10_25 
				   || tipoPlazo == SolicitudConnector.QUINCENAL_15_ULTIMO 
				   || tipoPlazo == SolicitudConnector.QUINCENAL_3_18 
				   || tipoPlazo == SolicitudConnector.QUINCENAL_5_20){
			meses=(double)plazo/2;
			
		} else if(tipoPlazo == MENSUAL|| tipoPlazo == SolicitudConnector.MENSUAL_3 
				   || tipoPlazo == SolicitudConnector.MENSUAL_5 
				   || tipoPlazo == SolicitudConnector.MENSUAL_ULTIMO){
			meses= plazo;
		} else if(tipoPlazo == BIMESTRAL){
			meses=plazo*2;
		}
		
		
		if(tipoPlazo == SEMANAL||
				   tipoPlazo == SolicitudConnector.SEMANAL_MARTES || 
				   tipoPlazo == SolicitudConnector.SEMANAL_JUEVES || 
				   tipoPlazo == SolicitudConnector.SEMANAL_VIERNES){
			 tasaMes= (double)sol.getTasaBase()/52;
			 interes = sol.getMontoSolicitado()*(sol.getPlazoSolicitado())*(tasaMes*0.01);
			 if(sol.getIdEsquemaCredito()!=SolicitudConnector.ESQUEMA_SIN_IVA){
				// iva = interes*CreditoConnector.IVA;
				 iva = interes*CreditoConnector.IVA+cuota*CreditoConnector.IVA;
			 }
			 montoTotal= sol.getMontoSolicitado()+interes+iva+cuota;
			
			
		}else{
			 tasaMes= sol.getTasaBase()/12;
			 interes = sol.getMontoSolicitado()*meses*(tasaMes*0.01);
			 if(sol.getIdEsquemaCredito()!=SolicitudConnector.ESQUEMA_SIN_IVA){
				 iva = interes*CreditoConnector.IVA+cuota*CreditoConnector.IVA;
//				 iva = interes*CreditoConnector.IVA;
			 }
			 montoTotal= sol.getMontoSolicitado()+interes+iva+cuota;
			
			
		}
		
		
		html+="<style type=\"text/css\">\n";
		html+="<!--\n";
			html+=".Estilo2 {font-size: 10px}\n";
			html+=".Estilo3 {font-size: 12px}\n";
			html+=".Estilo5 {font-size: 12px; font-weight: bold; }\n";
		html+="-->\n";

		html+=".titulo{\n";
		html+="	background-image: url(blockdefault3.png);\n";
		html+="	background-repeat: repeat-x;\n";
		html+="	font: bold 18px/14px Verdana, Geneva, Arial, Helvetica, sans-serif;\n";
		html+="		color:white;\n";
		html+="	padding:4px;\n";
		html+="	background-color:#5C909A;\n";
		html+="}\n";
		html+=".label{\n";
		html+="	background-image: url(blockdefault3.png);\n";
		html+="	background-repeat: repeat-x;\n";
		html+="	font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif;\n";
		html+="	color:white;\n";
		html+="	padding:4px;\n";
		html+="	background-color:#5C909A;\n";
		html+="}\n";
		html+="</style>\n";
		
		
		
		
		
		
		
		
		html+="<table width=\"609\" border=\"1\" cellpadding=\"0\" cellspacing=\"1\" class=\"solidblockmenu\"> \n";
		html+="   <tr style=\"font: bold 18px/14px Verdana, Geneva, Arial, Helvetica, sans-serif;	color:white; padding:4px; background-color:#969fcb; \" style=\"font-size: 14px;\" align=\"left\">\n";
		html+="    <td width=\"599\" height=\"51\" ><div>&nbsp;<b>Fecha tentativa de inicio del credito:</b>&nbsp;&nbsp;"+sol.getFechaInicialStr()+" </div> <div>&nbsp;</div> <div>&nbsp;<b>Fecha tentativa final del crédito:</b>&nbsp;&nbsp;"+sol.getFechaFinalStr()+" </div></td>\n";
		html+="  </tr>\n";
		html+="  <tr align=\"center\">\n";
		html+="    <td width=\"599\" height=\"12\" ></td>\n";
		html+="  </tr>\n";
		html+="  <tr style=\"font: bold 18px/14px Verdana, Geneva, Arial, Helvetica, sans-serif;	color:white; padding:4px; background-color:#969fcb; \" align=\"center\">\n";
		html+="    <td width=\"599\" height=\"35\" ><b>Cotización de crédito</b></td>\n";
		html+="  </tr>\n";
		html+="  <tr>\n";
		html+="    <td><table width=\"600\" border=\"0\" cellpadding=\"0\" cellspacing=\"1\" >\n";
		html+="          <tr align=\"center\">\n";
		html+="            <td width=\"131\" height=\"26\" style=\" font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif; color:white; padding:4px; background-color:#969fcb; \" align=\"right\"><b>Fecha:</b> </td>\n";
		html+="            <td width=\"469\" align=\"left\"  >&nbsp;&nbsp;"+DelegateConnectors.getCurrentDateStr()+"</td>\n";
		html+="  	</tr>";
		html+="          <tr align=\"center\">";
		html+="            <td width=\"131\" height=\"27\" style=\" font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif; color:white; padding:4px; background-color:#969fcb; \" align=\"right\"><b>Solicitante:</b> </td>";
		html+="            <td align=\"left\">&nbsp;&nbsp;"+sol.getNombresSolicitante()+" "+sol.getApellidoPaterno()+" "+sol.getApellidoMaterno()+"</td>\n";
		html+="  	</tr>\n";
		html+="          <tr align=\"center\">\n";
		html+="            <td width=\"131\" height=\"27\" style=\" font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif; color:white; padding:4px; background-color:#969fcb; \" align=\"right\"><b>Cliente:</b> </td>\n";
		html+="            <td align=\"left\">&nbsp;&nbsp;"+DelegateConnectors.getClienteById(sol.getCksolicitud().getIdCliente()).getNombreCliente()+"</td>\n";
		html+="          </tr>\n";
		html+="          <tr align=\"center\">\n";
		html+="            <td width=\"131\" height=\"27\" style=\" font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif; color:white; padding:4px; background-color:#969fcb; \" align=\"right\"><b>Gerente:</b> </td>\n";
		html+="            <td align=\"left\">&nbsp;&nbsp;"+DelegateConnectors.getGerentePorCliente(sol.getCksolicitud().getIdCliente()).toString()+"</td>\n";
		html+="          </tr>\n";
		html+="          <tr align=\"center\">\n";
		html+="            <td width=\"131\" height=\"27\" style=\" font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif; color:white; padding:4px; background-color:#969fcb; \" align=\"right\"><b>Ejecutivo:</b> </td>\n";
		html+="            <td align=\"left\">&nbsp;&nbsp;"+DelegateConnectors.getEjecutivoPorId(sol.getIdEjecutivo()).toString()+"</td>\n";
		html+="          </tr>\n";          
		html+="    </table></td>\n";
		html+="  </tr><td width=\"599\" height=\"12\" ></td>\n";
		html+="  <tr>\n";
		html+="  </tr>\n";

		html+="  <tr style=\"font: bold 18px/14px Verdana, Geneva, Arial, Helvetica, sans-serif;	color:white; padding:4px; background-color:#969fcb; \" align=\"center\">\n";
		html+="    <td height=\"30\">Detalle de la solicitud</td>\n";
		html+="  </tr>\n";
		html+="  <tr>\n";
		html+="    <td><table width=\"599\" border=\"0\" cellpadding=\"0\" cellspacing=\"1\">\n";
		html+="      <tr>\n";
		html+="        <td width=\"130\" height=\"22\"  align=\"right\" style=\" font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif; color:white; padding:4px; background-color:#969fcb; \">Importe:</td>\n";
		html+="        <td width=\"174\">&nbsp;$&nbsp;"+getDoubleCentesimas(sol.getMontoSolicitado())+"</td>\n";
		html+="        <td width=\"133\" style=\" font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif; color:white; padding:4px; background-color:#969fcb; \"  align=\"right\">Freq. descuentos:</td>\n";
		html+="        <td width=\"157\">&nbsp; &nbsp;"+DelegateConnectors.getPlazoSolicitadoPorId(sol.getIdPeriodoSolicitado())+"</td>\n";
		html+="      </tr>\n";
		html+="      <tr>\n";
		html+="        <td width=\"130\" height=\"22\"  align=\"right\" style=\" font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif; color:white; padding:4px; background-color:#969fcb; \">Tasa interés:</td>\n";
		html+="        <td>&nbsp; &nbsp;"+sol.getTasaBase()+" anual</td>\n";
		html+="        <td style=\" font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif; color:white; padding:4px; background-color:#969fcb; \"  align=\"right\">Pagos:</td>\n";
		html+="        <td>&nbsp; &nbsp;"+sol.getPlazoSolicitado()+"</td>\n";
		html+="      </tr>\n";
		html+="      <tr>\n";
		html+="        <td width=\"130\" height=\"22\"  align=\"right\" style=\" font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif; color:white; padding:4px; background-color:#969fcb; \">Intereses: </td>\n";
		html+="        <td>&nbsp;$&nbsp;"+getDoubleCentesimas(interes)+"</td>\n";
		html+="        <td>&nbsp;</td>\n";
		html+="        <td>&nbsp;</td>\n";
		html+="      </tr>\n";
		html+="      <tr>\n";
		html+="        <td width=\"130\" height=\"22\"  align=\"right\" style=\" font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif; color:white; padding:4px; background-color:#969fcb; \">Iva: </td>\n";
		html+="        <td>&nbsp;$&nbsp;"+getDoubleCentesimas(iva)+"</td>\n";
		html+="        <td>&nbsp;</td>\n";
		html+="        <td>&nbsp;</td>\n";
		html+="      </tr>\n";
		html+="      <tr>\n";
		html+="        <td width=\"130\" height=\"22\"  align=\"right\" style=\" font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif; color:white; padding:4px; background-color:#969fcb; \">Cuota de adm.: </td>\n";
		html+="        <td>&nbsp;$&nbsp;"+getDoubleCentesimas(cuota)+"</td>\n";
		html+="        <td>&nbsp;</td>\n";
		html+="        <td>&nbsp;</td>\n";
		html+="      </tr>\n";
		html+="     <tr>\n";
		html+="        <td width=\"130\" height=\"22\"  align=\"right\" style=\" font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif; color:white; padding:4px; background-color:#969fcb; \">Crédito: </td>\n";
		html+="        <td>&nbsp;$&nbsp;"+getDoubleCentesimas(montoTotal)+"</td>\n";
		html+="        <td align=\"right\" style=\" font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif; color:white; padding:4px; background-color:#969fcb; \">Importe de pagos:</td>\n";
		html+="        <td>&nbsp;$&nbsp;"+getDoubleCentesimas(montoTotal/plazo)+"</td>\n";
		html+="      </tr>\n";
		html+="    </table></td>\n";
		html+="  </tr>\n";
		html+="</table>";

		html+="YO: "+sol.getNombresSolicitante()+" "+sol.getApellidoPaterno()+" "+sol.getApellidoMaterno() + " estoy enterado y acepto las condiciones del crédito solicitado a MEXCAD. <br/>";
		html+="<br/><br/><br/>";
		html+="______________________________________<br/>";
		html+=sol.getNombresSolicitante()+" "+sol.getApellidoPaterno()+" "+sol.getApellidoMaterno() +"<br/>";
		
		
		html+="	En caso de aceptar las condiciones favor de proporcionar los siguientes datos:";
		html+="	<table width=\"460\"  cellpadding=\"1\" cellspacing=\"1\" >";
		html+="	  <tr>";
		html+="	    <td width=\"272\" style=\"background-color:#FFFFFF; color:#4563EF\" align=\"rigth\">Nombre del titular:</td>";
		html+="	  </tr>";
		html+="	  <tr>";
		html+="	    <td style=\"background-color:#FFFFFF; color:#4563EF\" align=\"rigth\">Banco</td>";
		html+="	  </tr>";
		html+="	  <tr>";
		html+="		    <td style=\"background-color:#FFFFFF; color:#4563EF\" align=\"rigth\">Cuenta</td>";
		html+="	  </tr>";
		html+="	  <tr>";
		html+="	    <td style=\"background-color:#FFFFFF; color:#4563EF\" align=\"rigth\">Clabe </td>";
		html+="	  </tr>";
		html+="	  <tr>";
		html+="	    <td style=\"background-color:#FFFFFF; color:#4563EF\" align=\"rigth\">Aval ( si se requiere)</td>";
		html+="	  </tr>";
		html+="	</table>";
		
		
		return html;
	}
	
	
	
	
	
	
	/*******/
	
	
	public static String getHTMLStringParaPresolicitud(Solicitud sol, int idCliente){
		
		sol.setFechaInicial(Formatter.getFechaHoraActual());
		sol.setFechaInicialStr(Formatter.getDateToday());
		String html="";
		
		double tasaMes =0.0;
		int plazo = sol.getPlazoSolicitado();
		int tipoPlazo = sol.getIdPeriodoSolicitado();
		double meses=0;
		
		double interes =0.0;
		double iva = 0.0;
		double montoTotal= 0.0;
		
		int idEsquemaCredito=sol.getIdEsquemaCredito();
	//	System.out.println("%%%%"+idEsquemaCredito);
		
		if(tipoPlazo == SEMANAL ||
				   tipoPlazo == SolicitudConnector.SEMANAL_MARTES || 
				   tipoPlazo == SolicitudConnector.SEMANAL_JUEVES || 
				   tipoPlazo == SolicitudConnector.SEMANAL_VIERNES){
			meses=(int) Math.ceil((double)plazo/4);
		}else if(tipoPlazo == QUINCENAL ||
				   tipoPlazo == SolicitudConnector.QUINCENAL_10_25 || 
				   tipoPlazo == SolicitudConnector.QUINCENAL_15_ULTIMO || 
				   tipoPlazo == SolicitudConnector.QUINCENAL_3_18 || 
				   tipoPlazo == SolicitudConnector.QUINCENAL_5_20){
			meses= (int) Math.ceil((double)plazo/2);
			
		} else if(tipoPlazo == MENSUAL||
				   tipoPlazo == SolicitudConnector.MENSUAL_3 || 
				   tipoPlazo == SolicitudConnector.MENSUAL_5 || 
				   tipoPlazo == SolicitudConnector.MENSUAL_ULTIMO){
			meses= plazo;
		} else if(tipoPlazo == BIMESTRAL){
			meses=plazo*2;
		}
		double cuota=0.0;
		if(meses <=10 ){
			cuota=cuotaAdministracionPorMes[(int)meses];
		}
		cuota=cuota/(1+CreditoConnector.IVA);
		if(tipoPlazo == SEMANAL||
				   tipoPlazo == SolicitudConnector.SEMANAL_MARTES || 
				   tipoPlazo == SolicitudConnector.SEMANAL_JUEVES || 
				   tipoPlazo == SolicitudConnector.SEMANAL_VIERNES){
			meses=(int) plazo/4;
		}else if(tipoPlazo == QUINCENAL ||
				   tipoPlazo == SolicitudConnector.QUINCENAL_10_25 || 
				   tipoPlazo == SolicitudConnector.QUINCENAL_15_ULTIMO || 
				   tipoPlazo == SolicitudConnector.QUINCENAL_3_18 || 
				   tipoPlazo == SolicitudConnector.QUINCENAL_5_20 ){
			meses= (double)plazo/2;
			
		} else if(tipoPlazo == MENSUAL ||
				   tipoPlazo == SolicitudConnector.MENSUAL_3 || 
				   tipoPlazo == SolicitudConnector.MENSUAL_5 || 
				   tipoPlazo == SolicitudConnector.MENSUAL_ULTIMO){
			meses= plazo;
		} else if(tipoPlazo == BIMESTRAL){
			meses=plazo*2;
		}

		
		if(tipoPlazo == SEMANAL||
				   tipoPlazo == SolicitudConnector.SEMANAL_MARTES || 
				   tipoPlazo == SolicitudConnector.SEMANAL_JUEVES || 
				   tipoPlazo == SolicitudConnector.SEMANAL_VIERNES){
			 tasaMes= (double)sol.getTasaBase()/52;
			 interes = sol.getMontoSolicitado()*(sol.getPlazoSolicitado())*(tasaMes*0.01);
			 if(idEsquemaCredito!=ESQUEMA_SIN_IVA){
				 iva = interes*CreditoConnector.IVA+cuota*CreditoConnector.IVA;
			 }
			 montoTotal= sol.getMontoSolicitado()+interes+iva+cuota;
			
			
		}else{
			 tasaMes= sol.getTasaBase()/12;
			 interes = sol.getMontoSolicitado()*meses*(tasaMes*0.01);
			 if(idEsquemaCredito!=SolicitudConnector.ESQUEMA_SIN_IVA){
				 iva = interes*CreditoConnector.IVA+cuota*CreditoConnector.IVA;
			 }
			 montoTotal= sol.getMontoSolicitado()+interes+iva+cuota;
			
			
		}
		
		
		html+="<style type=\"text/css\">\n";
		html+="<!--\n";
			html+=".Estilo2 {font-size: 10px}\n";
			html+=".Estilo3 {font-size: 12px}\n";
			html+=".Estilo5 {font-size: 12px; font-weight: bold; }\n";
		html+="-->\n";

		html+=".titulo{\n";
		html+="	background-image: url(blockdefault3.png);\n";
		html+="	background-repeat: repeat-x;\n";
		html+="	font: bold 18px/14px Verdana, Geneva, Arial, Helvetica, sans-serif;\n";
		html+="		color:white;\n";
		html+="	padding:4px;\n";
		html+="	background-color:#5C909A;\n";
		html+="}\n";
		html+=".label{\n";
		html+="	background-image: url(blockdefault3.png);\n";
		html+="	background-repeat: repeat-x;\n";
		html+="	font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif;\n";
		html+="	color:white;\n";
		html+="	padding:4px;\n";
		html+="	background-color:#5C909A;\n";
		html+="}\n";
		html+="</style>\n";
		

		List<RentaBean> listadoRentas= obtieneRentasPorSolicitudCliente(sol,idCliente);
	
		
		html+="<table width=\"647\" border=\"0\" cellpadding=\"1\" cellspacing=\"1\">";
		html+="	  <tr  style=\"background-color:#4563EF;font-size: 12px; color:#FFFFFF\" align=\"center\">";
		html+="	    <td width=\"40\">Núm.</td>";	
		html+="	    <td width=\"90\">Fecha inicial </td>";
		html+="	    <td width=\"90\">Fecha exigible</td>";
		html+="		<td width=\"70\">Amortizacion</td>";
		html+="	    <td width=\"60\">Intereses</td>";
		html+="	    <td width=\"60\">Iva</td>";
		html+="	    <td width=\"60\">Cuota</td>";
		html+="	    <td width=\"80\">Pago</td>";
		html+="	    <td width=\"80\">Saldo</td>";
		html+="	  </tr>";
		
		for(int i=0;i<listadoRentas.size();++i){
			RentaBean bean = listadoRentas.get(i);
			if(!(i%2==0)){
				html+="	  <tr style=\"background-color:#B3C1FD;font-size: 12px; \" align=\"center\">";
			}else{
				html+="	  <tr align=\"center\" style=\"background-color:#FFFFFF;font-size: 12px; \" >";
			}		
			
			html+="	    <td>"+bean.getNumRenta()+"</td>";
			html+="	    <td>"+bean.getFechaInicial()+"</td>";
			html+="	    <td>"+bean.getFechaExigible()+"</td>";
			html+="		<td>$ "+getDoubleCentesimas(bean.getAmortizacion())+"</td>";
			html+="	    <td>$ "+getDoubleCentesimas(bean.getIntereses())+"</td>";
			html+="	    <td>$ "+getDoubleCentesimas(bean.getIva())+"</td>";
			html+="	    <td>$ "+getDoubleCentesimas(bean.getComision())+"</td>";
			html+="	    <td>$ "+getDoubleCentesimas(bean.getPrimaPago())+"</td>";
			html+="	    <td>$ "+getDoubleCentesimas(bean.getMontoBase())+"</td>";
			html+="	  </tr>";
		}
		
		html+="</table><br/>";
		
		return html;
	}
	
	
	
	
	
	//public static String getHtmlStringAutorizacionPorSolicitud(Solicitud sol){
	public static String getHTMLStringfromSolicitudDesglose(Solicitud sol){
				 
		String html="";
		
		double tasaMes =0.0;
		int plazo = sol.getPlazoSolicitado();
		int tipoPlazo = sol.getIdPeriodoSolicitado();
		double meses=0;
		
		double interes =0.0;
		double iva = 0.0;
		double montoTotal= 0.0;
		
		
		
		if(tipoPlazo == SEMANAL||
				   tipoPlazo == SolicitudConnector.SEMANAL_MARTES || 
				   tipoPlazo == SolicitudConnector.SEMANAL_JUEVES || 
				   tipoPlazo == SolicitudConnector.SEMANAL_VIERNES){
			meses=(int) Math.ceil((double)plazo/4);
		}else if(tipoPlazo == QUINCENAL ||
				   tipoPlazo == SolicitudConnector.QUINCENAL_10_25 || 
				   tipoPlazo == SolicitudConnector.QUINCENAL_15_ULTIMO || 
				   tipoPlazo == SolicitudConnector.QUINCENAL_3_18|| 
				   tipoPlazo == SolicitudConnector.QUINCENAL_5_20 ){
			meses= (int)Math.ceil((double)plazo/2);
			
		} else if(tipoPlazo == MENSUAL||
				   tipoPlazo == SolicitudConnector.MENSUAL_3 || 
				   tipoPlazo == SolicitudConnector.MENSUAL_5 || 
				   tipoPlazo == SolicitudConnector.MENSUAL_ULTIMO){
			meses= plazo;
		} else if(tipoPlazo == BIMESTRAL){
			meses=plazo*2;
		}
		double cuota=0.0;
		if(meses <=10 ){
			cuota=cuotaAdministracionPorMes[(int)meses];
		}
		
		if(tipoPlazo == SEMANAL ||
				   tipoPlazo == SolicitudConnector.SEMANAL_MARTES || 
				   tipoPlazo == SolicitudConnector.SEMANAL_JUEVES || 
				   tipoPlazo == SolicitudConnector.SEMANAL_VIERNES){
			meses=(int) plazo/4;
		}else if(tipoPlazo == QUINCENAL ||
				   tipoPlazo == SolicitudConnector.QUINCENAL_10_25 || 
				   tipoPlazo == SolicitudConnector.QUINCENAL_15_ULTIMO || 
				   tipoPlazo == SolicitudConnector.QUINCENAL_3_18|| 
				   tipoPlazo == SolicitudConnector.QUINCENAL_5_20){
			meses= (double)plazo/2;
			
		} else if(tipoPlazo == MENSUAL||
				   tipoPlazo == SolicitudConnector.MENSUAL_3 || 
				   tipoPlazo == SolicitudConnector.MENSUAL_5 || 
				   tipoPlazo == SolicitudConnector.MENSUAL_ULTIMO){
			meses= plazo;
		} else if(tipoPlazo == BIMESTRAL){
			meses=plazo*2;
		}
		
		cuota=cuota/(1+CreditoConnector.IVA);
		if(tipoPlazo == SEMANAL||
				   tipoPlazo == SolicitudConnector.SEMANAL_MARTES || 
				   tipoPlazo == SolicitudConnector.SEMANAL_JUEVES || 
				   tipoPlazo == SolicitudConnector.SEMANAL_VIERNES){
			 tasaMes= (double)sol.getTasaBase()/52;
			 interes = sol.getMontoSolicitado()*(sol.getPlazoSolicitado())*(tasaMes*0.01);
			 if(sol.getIdEsquemaCredito()!=SolicitudConnector.ESQUEMA_SIN_IVA){
				// iva = interes*CreditoConnector.IVA;
				 iva = interes*CreditoConnector.IVA+cuota*CreditoConnector.IVA;
			 }
			 montoTotal= sol.getMontoSolicitado()+interes+iva+cuota;
			
			
		}else{
			 tasaMes= sol.getTasaBase()/12;
			 interes = sol.getMontoSolicitado()*meses*(tasaMes*0.01);
			 if(sol.getIdEsquemaCredito()!=SolicitudConnector.ESQUEMA_SIN_IVA){
				 iva = interes*CreditoConnector.IVA+cuota*CreditoConnector.IVA;
//				 iva = interes*CreditoConnector.IVA;
			 }
			 montoTotal= sol.getMontoSolicitado()+interes+iva+cuota;
			
			
		}
		
		
		
		
		
		
		html+="<style type=\"text/css\">\n";
		html+="<!--\n";
			html+=".Estilo2 {font-size: 10px}\n";
			html+=".Estilo3 {font-size: 12px}\n";
			html+=".Estilo5 {font-size: 12px; font-weight: bold; }\n";
		html+="-->\n";

		html+=".titulo{\n";
		html+="	background-image: url(blockdefault3.png);\n";
		html+="	background-repeat: repeat-x;\n";
		html+="	font: bold 18px/14px Verdana, Geneva, Arial, Helvetica, sans-serif;\n";
		html+="		color:white;\n";
		html+="	padding:4px;\n";
		html+="	background-color:#5C909A;\n";
		html+="}\n";
		html+=".label{\n";
		html+="	background-image: url(blockdefault3.png);\n";
		html+="	background-repeat: repeat-x;\n";
		html+="	font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif;\n";
		html+="	color:white;\n";
		html+="	padding:4px;\n";
		html+="	background-color:#5C909A;\n";
		html+="}\n";
		html+="</style>\n";
		
		
		
		
		
		
		
		
		html+="<table width=\"609\" border=\"1\" cellpadding=\"0\" cellspacing=\"1\" class=\"solidblockmenu\"> \n";
		html+="   <tr style=\"font: bold 18px/14px Verdana, Geneva, Arial, Helvetica, sans-serif;	color:white; padding:4px; background-color:#969fcb; \" style=\"font-size: 14px;\" align=\"left\">\n";
		html+="    <td width=\"599\" height=\"51\" ><div>&nbsp;<b>Fecha tentativa de inicio del credito:</b>&nbsp;&nbsp;"+sol.getFechaInicialStr()+" </div> <div>&nbsp;</div> <div>&nbsp;<b>Fecha tentativa final del crédito:</b>&nbsp;&nbsp;"+sol.getFechaFinalStr()+" </div></td>\n";
		html+="  </tr>\n";
		html+="  <tr align=\"center\">\n";
		html+="    <td width=\"599\" height=\"12\" ></td>\n";
		html+="  </tr>\n";
		html+="  <tr style=\"font: bold 18px/14px Verdana, Geneva, Arial, Helvetica, sans-serif;	color:white; padding:4px; background-color:#969fcb; \" align=\"center\">\n";
		html+="    <td width=\"599\" height=\"35\" ><b>Cotización de crédito</b></td>\n";
		html+="  </tr>\n";
		html+="  <tr>\n";
		html+="    <td><table width=\"600\" border=\"0\" cellpadding=\"0\" cellspacing=\"1\" >\n";
		html+="          <tr align=\"center\">\n";
		html+="            <td width=\"131\" height=\"26\" style=\" font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif; color:white; padding:4px; background-color:#969fcb; \" align=\"right\"><b>Fecha:</b> </td>\n";
		html+="            <td width=\"469\" align=\"left\"  >&nbsp;&nbsp;"+DelegateConnectors.getCurrentDateStr()+"</td>\n";
		html+="  	</tr>";
		html+="          <tr align=\"center\">";
		html+="            <td width=\"131\" height=\"27\" style=\" font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif; color:white; padding:4px; background-color:#969fcb; \" align=\"right\"><b>Solicitante:</b> </td>";
		html+="            <td align=\"left\">&nbsp;&nbsp;"+sol.getNombresSolicitante()+" "+sol.getApellidoPaterno()+" "+sol.getApellidoMaterno()+"</td>\n";
		html+="  	</tr>\n";
		html+="          <tr align=\"center\">\n";
		html+="            <td width=\"131\" height=\"27\" style=\" font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif; color:white; padding:4px; background-color:#969fcb; \" align=\"right\"><b>Cliente:</b> </td>\n";
		html+="            <td align=\"left\">&nbsp;&nbsp;"+DelegateConnectors.getClienteById(sol.getCksolicitud().getIdCliente()).getNombreCliente()+"</td>\n";
		html+="          </tr>\n";
		html+="          <tr align=\"center\">\n";
		html+="            <td width=\"131\" height=\"27\" style=\" font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif; color:white; padding:4px; background-color:#969fcb; \" align=\"right\"><b>Gerente:</b> </td>\n";
		html+="            <td align=\"left\">&nbsp;&nbsp;"+DelegateConnectors.getGerentePorCliente(sol.getCksolicitud().getIdCliente()).toString()+"</td>\n";
		html+="          </tr>\n";
		html+="          <tr align=\"center\">\n";
		html+="            <td width=\"131\" height=\"27\" style=\" font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif; color:white; padding:4px; background-color:#969fcb; \" align=\"right\"><b>Ejecutivo:</b> </td>\n";
		html+="            <td align=\"left\">&nbsp;&nbsp;"+DelegateConnectors.getEjecutivoPorId(sol.getIdEjecutivo()).toString()+"</td>\n";
		html+="          </tr>\n";          
		html+="    </table></td>\n";
		html+="  </tr><td width=\"599\" height=\"12\" ></td>\n";
		html+="  <tr>\n";
		html+="  </tr>\n";

		html+="  <tr style=\"font: bold 18px/14px Verdana, Geneva, Arial, Helvetica, sans-serif;	color:white; padding:4px; background-color:#969fcb; \" align=\"center\">\n";
		html+="    <td height=\"30\">Detalle de la solicitud</td>\n";
		html+="  </tr>\n";
		html+="  <tr>\n";
		html+="    <td><table width=\"599\" border=\"0\" cellpadding=\"0\" cellspacing=\"1\">\n";
		html+="      <tr>\n";
		html+="        <td width=\"130\" height=\"22\"  align=\"right\" style=\" font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif; color:white; padding:4px; background-color:#969fcb; \">Importe:</td>\n";
		html+="        <td width=\"174\">&nbsp;$&nbsp;"+getDoubleCentesimas(sol.getMontoSolicitado())+"</td>\n";
		html+="        <td width=\"133\" style=\" font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif; color:white; padding:4px; background-color:#969fcb; \"  align=\"right\">Freq. descuentos:</td>\n";
		html+="        <td width=\"157\">&nbsp; &nbsp;"+DelegateConnectors.getPlazoSolicitadoPorId(sol.getIdPeriodoSolicitado())+"</td>\n";
		html+="      </tr>\n";
		html+="      <tr>\n";
		html+="        <td width=\"130\" height=\"22\"  align=\"right\" style=\" font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif; color:white; padding:4px; background-color:#969fcb; \">Tasa interés:</td>\n";
		html+="        <td>&nbsp; &nbsp;"+sol.getTasaBase()+" anual</td>\n";
		html+="        <td style=\" font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif; color:white; padding:4px; background-color:#969fcb; \"  align=\"right\">Pagos:</td>\n";
		html+="        <td>&nbsp; &nbsp;"+sol.getPlazoSolicitado()+"</td>\n";
		html+="      </tr>\n";
		html+="      <tr>\n";
		html+="        <td width=\"130\" height=\"22\"  align=\"right\" style=\" font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif; color:white; padding:4px; background-color:#969fcb; \">Intereses: </td>\n";
		html+="        <td>&nbsp;$&nbsp;"+getDoubleCentesimas(interes)+"</td>\n";
		html+="        <td>&nbsp;</td>\n";
		html+="        <td>&nbsp;</td>\n";
		html+="      </tr>\n";
		html+="      <tr>\n";
		html+="        <td width=\"130\" height=\"22\"  align=\"right\" style=\" font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif; color:white; padding:4px; background-color:#969fcb; \">Iva: </td>\n";
		html+="        <td>&nbsp;$&nbsp;"+getDoubleCentesimas(iva)+"</td>\n";
		html+="        <td>&nbsp;</td>\n";
		html+="        <td>&nbsp;</td>\n";
		html+="      </tr>\n";
		html+="      <tr>\n";
		html+="        <td width=\"130\" height=\"22\"  align=\"right\" style=\" font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif; color:white; padding:4px; background-color:#969fcb; \">Cuota de adm.: </td>\n";
		html+="        <td>&nbsp;$&nbsp;"+getDoubleCentesimas(cuota)+"</td>\n";
		html+="        <td>&nbsp;</td>\n";
		html+="        <td>&nbsp;</td>\n";
		html+="      </tr>\n";
		html+="     <tr>\n";
		html+="        <td width=\"130\" height=\"22\"  align=\"right\" style=\" font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif; color:white; padding:4px; background-color:#969fcb; \">Crédito: </td>\n";
		html+="        <td>&nbsp;$&nbsp;"+getDoubleCentesimas(montoTotal)+"</td>\n";
		html+="        <td align=\"right\" style=\" font: bold 12px/14px Verdana, Geneva, Arial, Helvetica, sans-serif; color:white; padding:4px; background-color:#969fcb; \">Importe de pagos:</td>\n";
		html+="        <td>&nbsp;$&nbsp;"+getDoubleCentesimas(montoTotal/plazo)+"</td>\n";
		html+="      </tr>\n";
		html+="    </table></td>\n";
		html+="  </tr>\n";
		html+="</table><br/><br/>";

		List<RentaBean> listadoRentas= obtieneRentasPorSolicitud(sol);
		
		
		html+="<table width=\"847\" border=\"0\" cellpadding=\"1\" cellspacing=\"1\">";
		html+="	  <tr  style=\"background-color:#4563EF; color:#FFFFFF\" align=\"center\">";
		html+="	    <td width=\"40\">Núm.</td>";
		html+="	    <td width=\"90\">Fecha inicial </td>";
		html+="	    <td width=\"90\">Fecha exigible</td>";
		html+="		<td width=\"100\">Amortizacion</td>";
		html+="	    <td width=\"90\">Intereses</td>";
		html+="	    <td width=\"80\">Iva</td>";
		html+="	    <td width=\"80\">Cuota</td>";
		html+="	    <td width=\"100\">Pago</td>";
		html+="	    <td width=\"100\">Saldo</td>";
		html+="	  </tr>";
		
		for(int i=0;i<listadoRentas.size();++i){
			RentaBean bean = listadoRentas.get(i);
			if(!(i%2==0)){
				html+="	  <tr style=\"background-color:#B3C1FD; \" align=\"center\">";
			}else{
				html+="	  <tr align=\"center\">";
			}		
			
			html+="	    <td>"+bean.getNumRenta()+"</td>";
			html+="	    <td>"+bean.getFechaInicial()+"</td>";
			html+="	    <td>"+bean.getFechaExigible()+"</td>";
			html+="		<td>"+getDoubleCentesimas(bean.getAmortizacion())+"</td>";
			html+="	    <td>"+getDoubleCentesimas(bean.getIntereses())+"</td>";
			html+="	    <td>"+getDoubleCentesimas(bean.getIva())+"</td>";
			html+="	    <td>"+getDoubleCentesimas(bean.getComision())+"</td>";
			html+="	    <td>"+getDoubleCentesimas(bean.getPrimaPago())+"</td>";
			html+="	    <td>"+getDoubleCentesimas(bean.getMontoBase())+"</td>";
			html+="	  </tr>";
		}
		
		html+="</table><br/>";
			
		html+="YO: "+sol.getNombresSolicitante()+" "+sol.getApellidoPaterno()+" "+sol.getApellidoMaterno() + " estoy enterado y acepto las condiciones del crédito solicitado a MEXCAD. <br/>";
		html+="<br/><br/><br/>";
		html+="_________________________________________<br/>";
		html+=sol.getNombresSolicitante()+" "+sol.getApellidoPaterno()+" "+sol.getApellidoMaterno() +"<br/>";
		
		
		
		html+="	En caso de aceptar las condiciones favor de proporcionar los siguientes datos:";
		html+="	<table width=\"460\"  cellpadding=\"1\" cellspacing=\"1\" >";
		html+="	  <tr>";
		html+="	    <td width=\"272\" style=\"background-color:#FFFFFF; color:#4563EF\" align=\"rigth\">Nombre del titular:</td>";
		html+="	  </tr>";
		html+="	  <tr>";
		html+="	    <td style=\"background-color:#FFFFFF; color:#4563EF\" align=\"rigth\">Banco</td>";
		html+="	  </tr>";
		html+="	  <tr>";
		html+="		    <td style=\"background-color:#FFFFFF; color:#4563EF\" align=\"rigth\">Cuenta</td>";
		html+="	  </tr>";
		html+="	  <tr>";
		html+="	    <td style=\"background-color:#FFFFFF; color:#4563EF\" align=\"rigth\">Clabe </td>";
		html+="	  </tr>";
		html+="	  <tr>";
		html+="	    <td style=\"background-color:#FFFFFF; color:#4563EF\" align=\"rigth\">Aval ( si se requiere)</td>";
		html+="	  </tr>";
		html+="	</table>";
		
		
		
		return html;
	}
	
	public static List<RentaBean> obtieneRentasPorSolicitudActualizacion(Solicitud sol){
		List<RentaBean> list = new ArrayList<RentaBean>();
		int cont=1;
		
		double tasaMes =0.0;
		int plazo = sol.getPlazoSolicitado();
		int tipoPlazo = sol.getIdPeriodoSolicitado();
		double meses=0;
		
		double interes =0.0;
		double iva = 0.0;
		double montoTotal= 0.0;
		double cuotaPeriodo=0.0;
		
		
		if(tipoPlazo == SEMANAL||
				   tipoPlazo == SolicitudConnector.SEMANAL_JUEVES || 
				   tipoPlazo == SolicitudConnector.SEMANAL_MARTES || 
				   tipoPlazo == SolicitudConnector.SEMANAL_VIERNES){
			meses=(int) Math.ceil((double)plazo/4);
		}else if(tipoPlazo == QUINCENAL ||
				   tipoPlazo == SolicitudConnector.QUINCENAL_10_25 || 
				   tipoPlazo == SolicitudConnector.QUINCENAL_15_ULTIMO || 
				   tipoPlazo == SolicitudConnector.QUINCENAL_3_18|| 
				   tipoPlazo == SolicitudConnector.QUINCENAL_5_20){
			meses= (int) Math.ceil((double)plazo/2);
		} else if(tipoPlazo == MENSUAL||
				   tipoPlazo == SolicitudConnector.MENSUAL_3 || 
				   tipoPlazo == SolicitudConnector.MENSUAL_5 || 
				   tipoPlazo == SolicitudConnector.MENSUAL_ULTIMO){
			meses= plazo;
		} else if(tipoPlazo == BIMESTRAL){
			meses=plazo*2;
		}
		double cuota=0.0;
		if(meses <=10 ){
			cuota=cuotaAdministracionPorMes[(int)meses];
		}
		cuota=cuota/(1+CreditoConnector.IVA);
		
		if(tipoPlazo == SEMANAL||
				   tipoPlazo == SolicitudConnector.SEMANAL_JUEVES || 
				   tipoPlazo == SolicitudConnector.SEMANAL_MARTES || 
				   tipoPlazo == SolicitudConnector.SEMANAL_VIERNES){
			meses=(int) plazo/4;
		}else if(tipoPlazo == QUINCENAL ||
				   tipoPlazo == SolicitudConnector.QUINCENAL_10_25 || 
				   tipoPlazo == SolicitudConnector.QUINCENAL_15_ULTIMO || 
				   tipoPlazo == SolicitudConnector.QUINCENAL_3_18|| 
				   tipoPlazo == SolicitudConnector.QUINCENAL_5_20){
			meses= (double)plazo/2;
		} else if(tipoPlazo == MENSUAL||
				   tipoPlazo == SolicitudConnector.MENSUAL_3 || 
				   tipoPlazo == SolicitudConnector.MENSUAL_5 || 
				   tipoPlazo == SolicitudConnector.MENSUAL_ULTIMO){
			meses= plazo;
		} else if(tipoPlazo == BIMESTRAL){
			meses=plazo*2;
		}
		
		
		if(tipoPlazo == SEMANAL||
				   tipoPlazo == SolicitudConnector.SEMANAL_JUEVES || 
				   tipoPlazo == SolicitudConnector.SEMANAL_MARTES || 
				   tipoPlazo == SolicitudConnector.SEMANAL_VIERNES){
			 tasaMes= (double)sol.getTasaBase()/52;
			 interes = sol.getMontoSolicitado()*((double)sol.getPlazoSolicitado())*(tasaMes*0.01);
			// System.out.println(tasaMes+", "+interes+", "+sol.getPlazoSolicitado()+", "+sol.getMontoSolicitado());
			 iva = interes*CreditoConnector.IVA+cuota*CreditoConnector.IVA;
		//	 iva = interes*CreditoConnector.IVA;
			 montoTotal= sol.getMontoSolicitado()+interes+iva+cuota;
			
			
		}else{
			 tasaMes= sol.getTasaBase()/12;
			 interes = sol.getMontoSolicitado()*meses*(tasaMes*0.01);
			 iva = interes*CreditoConnector.IVA+cuota*CreditoConnector.IVA;
		//	 iva = interes*CreditoConnector.IVA;
			 montoTotal= sol.getMontoSolicitado()+interes+iva+cuota;
		}
		
		 
		
		cuotaPeriodo=(double)montoTotal/sol.getPlazoSolicitado();
		String  fechaInicialStr=sol.getFechaInicialStr();
		double amortizacion =sol.getMontoSolicitado()/sol.getPlazoSolicitado();
		cuota=cuota/sol.getPlazoSolicitado();
		iva=iva/sol.getPlazoSolicitado();
		interes = interes/sol.getPlazoSolicitado();
		for(int i=0;i<plazo;++i){
			RentaBean renta = new RentaBean();
			renta.setAmortizacion(amortizacion);
			renta.setComision(cuota);
			renta.setImpuestos(iva);
			renta.setIntereses(interes);
			renta.setIva(iva);
			renta.setMontoBase(montoTotal);
			renta.setNumRenta(cont);
			renta.setPrimaPago(cuotaPeriodo);
			Date fechaIni =sol.getFechaInicial();
			renta.setFechaInicial(Formatter.getStringFromDate(fechaIni));
			
		//	System.out.print(cont+"\t"+getDoubleCentesimas(cuota)+"\t"+getDoubleCentesimas(iva)+"\t"+getDoubleCentesimas(interes)+"\t"+getDoubleCentesimas(montoTotal)+"\t"+fechaInicialStr+"\t");
			if(tipoPlazo == SEMANAL||
					   tipoPlazo == SolicitudConnector.SEMANAL_JUEVES || 
					   tipoPlazo == SolicitudConnector.SEMANAL_MARTES || 
					   tipoPlazo == SolicitudConnector.SEMANAL_VIERNES){
				fechaInicialStr=Formatter.getStringFromDate(Formatter.getFechaFinalByDias(fechaInicialStr, 7, tipoPlazo));
				renta.setFechaExigible(fechaInicialStr);
				
			}else if(tipoPlazo == QUINCENAL ||
					   tipoPlazo == SolicitudConnector.QUINCENAL_10_25 || 
					   tipoPlazo == SolicitudConnector.QUINCENAL_15_ULTIMO || 
					   tipoPlazo == SolicitudConnector.QUINCENAL_3_18 || 
					   tipoPlazo == SolicitudConnector.QUINCENAL_5_20){
				fechaInicialStr=Formatter.getStringFromDate(Formatter.getFechaFinalByDias(fechaInicialStr, 15, tipoPlazo));
				renta.setFechaExigible(fechaInicialStr);
				
			}else if(tipoPlazo == MENSUAL||
					   tipoPlazo == SolicitudConnector.MENSUAL_3 || 
					   tipoPlazo == SolicitudConnector.MENSUAL_5 || 
					   tipoPlazo == SolicitudConnector.MENSUAL_ULTIMO){
				fechaInicialStr=Formatter.getStringFromDate(Formatter.getFechaFinalByDias(Formatter.getStringFromDate(fechaIni), 1, tipoPlazo));
				renta.setFechaExigible(fechaInicialStr);
				
			}else if(tipoPlazo == BIMESTRAL){
				fechaInicialStr=Formatter.getStringFromDate(Formatter.getFechaFinalByDias(fechaInicialStr, 2, BIMESTRAL));
				renta.setFechaExigible(fechaInicialStr);
				
			}
		//	System.out.println("\t"+fechaInicialStr+"\t");
			
			montoTotal-=cuotaPeriodo;
			cont++;
			list.add(renta);
		}
		
		
		
		
		
		return list;
	}
	
	public static List<RentaBean> obtieneRentasPorSolicitudCliente(Solicitud sol,int idCliente){
		List<RentaBean> list = new ArrayList<RentaBean>();
		int cont=1;
		
		double tasaMes =0.0;
		int plazo = sol.getPlazoSolicitado();
		int tipoPlazo = sol.getIdPeriodoSolicitado();
		double meses=0;
		
		double interes =0.0;
		double iva = 0.0;
		double montoTotal= 0.0;
		double cuotaPeriodo=0.0;
		
		
		if(tipoPlazo == SEMANAL || tipoPlazo == SolicitudConnector.SEMANAL_MARTES || 
				tipoPlazo == SolicitudConnector.SEMANAL_JUEVES||tipoPlazo== SolicitudConnector.SEMANAL_VIERNES){
			meses=(int) Math.ceil((double)plazo/4);
		}else if(tipoPlazo == QUINCENAL || tipoPlazo == SolicitudConnector.QUINCENAL_3_18 ||
				 tipoPlazo == SolicitudConnector.QUINCENAL_5_20 || 
				 tipoPlazo == SolicitudConnector.QUINCENAL_10_25 || tipoPlazo == SolicitudConnector.QUINCENAL_15_ULTIMO){
			meses= (int) Math.ceil((double)plazo/2);
		} else if(tipoPlazo == MENSUAL || tipoPlazo == SolicitudConnector.MENSUAL_3 || 
				  tipoPlazo == SolicitudConnector.MENSUAL_5 || tipoPlazo == SolicitudConnector.MENSUAL_ULTIMO ){
			meses= plazo;
		} else if(tipoPlazo == BIMESTRAL){
			meses=plazo*2;
		}
		double cuota=0.0;
		if(meses <=10 ){
			cuota=cuotaAdministracionPorMes[(int)meses];
		}
		cuota=cuota/(1+CreditoConnector.IVA);
		//System.out.println("cuota: "+cuota);
		if(tipoPlazo == SEMANAL || tipoPlazo == SolicitudConnector.SEMANAL_MARTES || 
				tipoPlazo == SolicitudConnector.SEMANAL_JUEVES||tipoPlazo== SolicitudConnector.SEMANAL_VIERNES){
			meses=(int) plazo/4;
		}else if(tipoPlazo == QUINCENAL ||tipoPlazo == SolicitudConnector.QUINCENAL_3_18 ||
				tipoPlazo == SolicitudConnector.QUINCENAL_5_20 ||tipoPlazo == SolicitudConnector.QUINCENAL_10_25 ||
				tipoPlazo == SolicitudConnector.QUINCENAL_15_ULTIMO){
			meses= (double)plazo/2;
		} else if(tipoPlazo == MENSUAL || tipoPlazo == SolicitudConnector.MENSUAL_3 || 
				  tipoPlazo == SolicitudConnector.MENSUAL_5 || tipoPlazo == SolicitudConnector.MENSUAL_ULTIMO ){
			meses= plazo;
		} else if(tipoPlazo == BIMESTRAL){
			meses=plazo*2;
		}
		
		
		if(tipoPlazo == SEMANAL || tipoPlazo == SolicitudConnector.SEMANAL_MARTES||
				tipoPlazo == SolicitudConnector.SEMANAL_JUEVES||tipoPlazo== SolicitudConnector.SEMANAL_VIERNES){
			
			 tasaMes= (double)sol.getTasaBase()/52;
			 interes = sol.getMontoSolicitado()*((double)sol.getPlazoSolicitado())*(tasaMes*0.01);
			 //System.out.println(tasaMes+", "+interes+", "+sol.getPlazoSolicitado()+", "+sol.getMontoSolicitado());
			 if(sol.getIdEsquemaCredito()!=SolicitudConnector.ESQUEMA_SIN_IVA){
			   iva = interes*CreditoConnector.IVA+cuota*CreditoConnector.IVA;
			 }
			 montoTotal= sol.getMontoSolicitado()+interes+iva+cuota;
			
		}else{
			 tasaMes= sol.getTasaBase()/12;
			 interes = sol.getMontoSolicitado()*meses*(tasaMes*0.01);
			 if(sol.getIdEsquemaCredito()!=SolicitudConnector.ESQUEMA_SIN_IVA){
				 iva = interes*CreditoConnector.IVA+cuota*CreditoConnector.IVA;
			 }
			 montoTotal= sol.getMontoSolicitado()+interes+iva+cuota;
		}
		
		 
		
		cuotaPeriodo=(double)montoTotal/sol.getPlazoSolicitado();
		String  fechaInicialStr=sol.getFechaInicialStr();
		double amortizacion =sol.getMontoSolicitado()/sol.getPlazoSolicitado();
		cuota=cuota/sol.getPlazoSolicitado();
		iva=iva/sol.getPlazoSolicitado();
		interes = interes/sol.getPlazoSolicitado();
		for(int i=0;i<plazo;++i){
			RentaBean renta = new RentaBean();
			renta.setAmortizacion(amortizacion);
			renta.setComision(cuota);
			renta.setImpuestos(iva);
			renta.setIntereses(interes);
			renta.setIva(iva);
			renta.setMontoBase(montoTotal);
			renta.setNumRenta(cont);
			renta.setPrimaPago(cuotaPeriodo);
			Date fechaIni =Formatter.getDateFromString(fechaInicialStr);//Formatter.getFechaFinalByDias(fechaInicialStr,1);
			renta.setFechaInicial(Formatter.getStringFromDate(fechaIni));
			
		//	System.out.print(cont+"\t"+getDoubleCentesimas(cuota)+"\t"+getDoubleCentesimas(iva)+"\t"+getDoubleCentesimas(interes)+"\t"+getDoubleCentesimas(montoTotal)+"\t"+fechaInicialStr+"\t");
			if(tipoPlazo == SEMANAL){
				fechaInicialStr=Formatter.getStringFromDate(Formatter.getFechaFinalByDias(fechaInicialStr, 7, SEMANAL));
				renta.setFechaExigible(fechaInicialStr);
				
			}else if((tipoPlazo == SolicitudConnector.SEMANAL_MARTES || tipoPlazo == SolicitudConnector.SEMANAL_JUEVES ||
					tipoPlazo == SolicitudConnector.SEMANAL_VIERNES) && idCliente== PSG && 
					( Constantes.AMBIENTE== Constantes.SISTEMA.LINUX_SOFOM ||
							  Constantes.AMBIENTE== Constantes.SISTEMA.WINDOWS_SOFOM ) ){
				
				fechaInicialStr=Formatter.getStringFromDate(Formatter.getFechaFinalByDias(fechaInicialStr, 7, tipoPlazo));
				renta.setFechaExigible(fechaInicialStr);
				
			}else if(tipoPlazo == QUINCENAL ){
				fechaInicialStr=Formatter.getStringFromDate(Formatter.getFechaFinalByDias(fechaInicialStr, 15, QUINCENAL));
				renta.setFechaExigible(fechaInicialStr);
				
			}else if((tipoPlazo == SolicitudConnector.QUINCENAL_3_18 ||
					tipoPlazo == SolicitudConnector.QUINCENAL_5_20 ||tipoPlazo == SolicitudConnector.QUINCENAL_10_25 ||
					tipoPlazo == SolicitudConnector.QUINCENAL_15_ULTIMO) && idCliente== PSG && 
					( Constantes.AMBIENTE== Constantes.SISTEMA.LINUX_SOFOM ||
							  Constantes.AMBIENTE== Constantes.SISTEMA.WINDOWS_SOFOM ) ){
				
				fechaInicialStr=Formatter.getStringFromDate(Formatter.getFechaFinalByDias(fechaInicialStr, 7, tipoPlazo));
				renta.setFechaExigible(fechaInicialStr);

		
				
			}else if(tipoPlazo == MENSUAL ){
				fechaInicialStr=Formatter.getStringFromDate(Formatter.getFechaFinalByDias(Formatter.getStringFromDate(fechaIni), 1, MENSUAL));
				renta.setFechaExigible(fechaInicialStr);
				
			}else if( tipoPlazo == SolicitudConnector.MENSUAL_3 || 
					  tipoPlazo == SolicitudConnector.MENSUAL_5 || tipoPlazo == SolicitudConnector.MENSUAL_ULTIMO){
				fechaInicialStr=Formatter.getStringFromDate(Formatter.getFechaFinalByDias(Formatter.getStringFromDate(fechaIni), 1, tipoPlazo));
				renta.setFechaExigible(fechaInicialStr);
			
			}else if(tipoPlazo == BIMESTRAL){
				fechaInicialStr=Formatter.getStringFromDate(Formatter.getFechaFinalByDias(fechaInicialStr, 2, BIMESTRAL));
				renta.setFechaExigible(fechaInicialStr);
				
			}
		//	System.out.println("\t"+fechaInicialStr+"\t");
			
			montoTotal-=cuotaPeriodo;
			cont++;
			list.add(renta);
		}
		
		
		
		
		
		return list;
	}

	
	public static List<RentaBean> obtieneRentasPorSolicitud(Solicitud sol){
		List<RentaBean> list = new ArrayList<RentaBean>();
		int cont=1;
		
		double tasaMes =0.0;
		int plazo = sol.getPlazoSolicitado();
		int tipoPlazo = sol.getIdPeriodoSolicitado();
		double meses=0;
		
		double interes =0.0;
		double iva = 0.0;
		double montoTotal= 0.0;
		double cuotaPeriodo=0.0;
		
		
		if(tipoPlazo == SEMANAL || 
		   tipoPlazo == SolicitudConnector.SEMANAL_MARTES || 
		   tipoPlazo == SolicitudConnector.SEMANAL_JUEVES || 
		   tipoPlazo == SolicitudConnector.SEMANAL_VIERNES){
			
			meses=(int) Math.ceil((double)plazo/4);
			
		}else if(tipoPlazo == QUINCENAL ||tipoPlazo == SolicitudConnector.QUINCENAL_3_18 ||
				tipoPlazo == SolicitudConnector.QUINCENAL_5_20 ||tipoPlazo == SolicitudConnector.QUINCENAL_10_25 ||
				tipoPlazo == SolicitudConnector.QUINCENAL_15_ULTIMO){
			meses= (int) Math.ceil((double)plazo/2);
		} else if(tipoPlazo == MENSUAL || tipoPlazo == SolicitudConnector.MENSUAL_3 || 
				  tipoPlazo == SolicitudConnector.MENSUAL_5 || tipoPlazo == SolicitudConnector.MENSUAL_ULTIMO){
			meses= plazo;
		} else if(tipoPlazo == BIMESTRAL){
			meses=plazo*2;
		}
		double cuota=0.0;
		if(meses <=10 ){
			cuota=cuotaAdministracionPorMes[(int)meses];
		}
		cuota=cuota/(1+CreditoConnector.IVA);
		//System.out.println("cuota: "+cuota);
		if(tipoPlazo == SEMANAL || tipoPlazo == SolicitudConnector.SEMANAL_MARTES || 
				   tipoPlazo == SolicitudConnector.SEMANAL_JUEVES || 
				   tipoPlazo == SolicitudConnector.SEMANAL_VIERNES){
			meses=(int) plazo/4;
		}else if(tipoPlazo == QUINCENAL ||tipoPlazo == SolicitudConnector.QUINCENAL_3_18 ||
				tipoPlazo == SolicitudConnector.QUINCENAL_5_20 ||tipoPlazo == SolicitudConnector.QUINCENAL_10_25 ||
				tipoPlazo == SolicitudConnector.QUINCENAL_15_ULTIMO){
			meses= (double)plazo/2;
		} else if(tipoPlazo == MENSUAL || tipoPlazo == SolicitudConnector.MENSUAL_3 || 
				  tipoPlazo == SolicitudConnector.MENSUAL_5 || tipoPlazo == SolicitudConnector.MENSUAL_ULTIMO ){
			meses= plazo;
		} else if(tipoPlazo == BIMESTRAL){
			meses=plazo*2;
		}
		
		
		if(tipoPlazo == SEMANAL || tipoPlazo == SolicitudConnector.SEMANAL_MARTES || 
				   tipoPlazo == SolicitudConnector.SEMANAL_JUEVES || 
				   tipoPlazo == SolicitudConnector.SEMANAL_VIERNES){
			 tasaMes= (double)sol.getTasaBase()/52;
			 interes = sol.getMontoSolicitado()*((double)sol.getPlazoSolicitado())*(tasaMes*0.01);
			 //System.out.println(tasaMes+", "+interes+", "+sol.getPlazoSolicitado()+", "+sol.getMontoSolicitado());
			 if(sol.getIdEsquemaCredito()!=SolicitudConnector.ESQUEMA_SIN_IVA){
			   iva = interes*CreditoConnector.IVA+cuota*CreditoConnector.IVA;
			 }
			 montoTotal= sol.getMontoSolicitado()+interes+iva+cuota;
			
		}else{
			 tasaMes= sol.getTasaBase()/12;
			 interes = sol.getMontoSolicitado()*meses*(tasaMes*0.01);
			 if(sol.getIdEsquemaCredito()!=SolicitudConnector.ESQUEMA_SIN_IVA){
				 iva = interes*CreditoConnector.IVA+cuota*CreditoConnector.IVA;
			 }
			 montoTotal= sol.getMontoSolicitado()+interes+iva+cuota;
		}
		
		 
		
		cuotaPeriodo=(double)montoTotal/sol.getPlazoSolicitado();
		String  fechaInicialStr=sol.getFechaInicialStr();
		double amortizacion =sol.getMontoSolicitado()/sol.getPlazoSolicitado();
		cuota=cuota/sol.getPlazoSolicitado();
		iva=iva/sol.getPlazoSolicitado();
		interes = interes/sol.getPlazoSolicitado();
		for(int i=0;i<plazo;++i){
			RentaBean renta = new RentaBean();
			renta.setAmortizacion(amortizacion);
			renta.setComision(cuota);
			renta.setImpuestos(iva);
			renta.setIntereses(interes);
			renta.setIva(iva);
			renta.setMontoBase(montoTotal);
			renta.setNumRenta(cont);
			renta.setPrimaPago(cuotaPeriodo);
			Date fechaIni =Formatter.getDateFromString(fechaInicialStr);//Formatter.getFechaFinalByDias(fechaInicialStr,1);
			renta.setFechaInicial(Formatter.getStringFromDate(fechaIni));
			
		//	System.out.print(cont+"\t"+getDoubleCentesimas(cuota)+"\t"+getDoubleCentesimas(iva)+"\t"+getDoubleCentesimas(interes)+"\t"+getDoubleCentesimas(montoTotal)+"\t"+fechaInicialStr+"\t");
			if(tipoPlazo == SEMANAL ){
				fechaInicialStr=Formatter.getStringFromDate(Formatter.getFechaFinalByDias(fechaInicialStr, 7, SEMANAL));
				renta.setFechaExigible(fechaInicialStr);
				
			}if(tipoPlazo == SolicitudConnector.SEMANAL_MARTES || 
				tipoPlazo == SolicitudConnector.SEMANAL_JUEVES || 
				tipoPlazo == SolicitudConnector.SEMANAL_VIERNES ){
				fechaInicialStr=Formatter.getStringFromDate(Formatter.getFechaFinalByDias(fechaInicialStr, 7, tipoPlazo));
				renta.setFechaExigible(fechaInicialStr);
			
				
			}else if(tipoPlazo == QUINCENAL){
				fechaInicialStr=Formatter.getStringFromDate(Formatter.getFechaFinalByDias(fechaInicialStr, 15, QUINCENAL));
				renta.setFechaExigible(fechaInicialStr);
				
			}if(tipoPlazo == SolicitudConnector.QUINCENAL_3_18 ||
					tipoPlazo == SolicitudConnector.QUINCENAL_5_20 ||tipoPlazo == SolicitudConnector.QUINCENAL_10_25 ||
					tipoPlazo == SolicitudConnector.QUINCENAL_15_ULTIMO ){
					fechaInicialStr=Formatter.getStringFromDate(Formatter.getFechaFinalByDias(fechaInicialStr, 7, tipoPlazo));
					renta.setFechaExigible(fechaInicialStr);
				
					
					
			}else if(tipoPlazo == MENSUAL  ){
				fechaInicialStr=Formatter.getStringFromDate(Formatter.getFechaFinalByDias(Formatter.getStringFromDate(fechaIni), 1, MENSUAL));
				renta.setFechaExigible(fechaInicialStr);
				
			}if(tipoPlazo == SolicitudConnector.MENSUAL_3 || 
					  tipoPlazo == SolicitudConnector.MENSUAL_5 || tipoPlazo == SolicitudConnector.MENSUAL_ULTIMO){
					fechaInicialStr=Formatter.getStringFromDate(Formatter.getFechaFinalByDias(Formatter.getStringFromDate(fechaIni), 1, tipoPlazo));
					renta.setFechaExigible(fechaInicialStr);
				
					
					
			}else if(tipoPlazo == BIMESTRAL){
				fechaInicialStr=Formatter.getStringFromDate(Formatter.getFechaFinalByDias(fechaInicialStr, 2, BIMESTRAL));
				renta.setFechaExigible(fechaInicialStr);
				
			}
		//	System.out.println("\t"+fechaInicialStr+"\t");
			
			montoTotal-=cuotaPeriodo;
			cont++;
			list.add(renta);
		}
		
		
		
		
		
		return list;
	}
	
	
	
	public static synchronized int autorizaCredito(int idSol,int idUsuario ) {
		Solicitud sol = DelegateConnectors.getSolicitudPorId(idSol);
	
		DelegateConnectors.actualizaStatusSolicitud(sol,SolicitudConnector.SOLICITUD_ACEPTADA);	
		int id=CreditoConnector.guardaCreditoBySolicitud(sol,idUsuario);

		SolicitudConnector.reenviarCreacionCredito(idSol);	
		return id;
		
	}
	public static int rechazaCredito(int id) {
		Solicitud sol = DelegateConnectors.getSolicitudPorId(id);
		DelegateConnectors.actualizaStatusSolicitud(sol,SolicitudConnector.SOLICITUD_RECHAZADA);	
			
		return DelegateConnectors.actualizaStatusSolicitud(sol,SolicitudConnector.SOLICITUD_RECHAZADA);
	}
	
	

	
	
}
